Python 中多变量迭代的 C# 模拟?
在 Python 中,我们可以像这样同时迭代多个变量:
my_list = [[1, 2, 3], [4, 5, 6]]
for a, b, c in my_list:
pass
是否有比这更接近的 C# 模拟?
List<List<int>> myList = new List<List<int>> {
new List<int> { 1, 2, 3 },
new List<int> { 4, 5, 6 }
};
foreach (List<int> subitem in myList) {
int a = subitem[0];
int b = subitem[1];
int c = subitem[2];
continue;
}
编辑 - 只是为了澄清,所讨论的确切代码必须为 C# 示例中的每个索引分配一个名称。
In Python one can iterate over multiple variables simultaneously like this:
my_list = [[1, 2, 3], [4, 5, 6]]
for a, b, c in my_list:
pass
Is there a C# analog closer than this?
List<List<int>> myList = new List<List<int>> {
new List<int> { 1, 2, 3 },
new List<int> { 4, 5, 6 }
};
foreach (List<int> subitem in myList) {
int a = subitem[0];
int b = subitem[1];
int c = subitem[2];
continue;
}
Edit - Just to clarify, the exact code in question was having to assign a name to each index in the C# example.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
与你所拥有的并没有太大不同,但是这个怎么样?
Not too different from what you have but how about this ?
你可以尝试这样的事情:
You can try something like this:
C# 没有为此提供特殊的构造,并且
在 C# 中也不可能进行多重赋值。
您还应该注意,列表列表并不是真正的 C# 风格。您通常会创建一个具有
a
、b
和c
属性的类,并始终保留这些属性的列表。C# does not have special constructs for this, and not for multiple assignments either
is not possible in c#.
You should also note that lists of lists are not really c# style. You typically create a class with
a
,b
andc
properties and keep a list of those all the way through.您可以创建使用 lambda 表达式可以执行此操作的 out 扩展方法。
但最后会是这样的:
for(int i = 0; i < tab.length; i++){
int a = tab[0];
int b = 选项卡[1];
int c = tab[2];
这
只是代码“糖”,恕我直言,不应在共享代码中使用。
You can create your out extension method that using lambda expression can do this.
But at the end it will be something like:
for(int i = 0; i < tab.length; i++){
int a = tab[0];
int b = tab[1];
int c = tab[2];
}
This is only code "sugar", that IMHO should be not used in shared code.