我怎样才能(如果可能的话)在C#for循环中初始化不同类型的多个变量?例:
for (MyClass i = 0, int j = 1; j<3; j++,i++)
Run Code Online (Sandbox Code Playgroud) 在Python中我可以写
def myMethod():
#some work to find the row and col
return (row, col)
row, col = myMethod()
mylist[row][col] # do work on this element
Run Code Online (Sandbox Code Playgroud)
但是在C#中,我发现自己在写作
int[] MyMethod()
{
// some work to find row and col
return new int[] { row, col }
}
int[] coords = MyMethod();
mylist[coords[0]][coords[1]] //do work on this element
Run Code Online (Sandbox Code Playgroud)
Pythonic方式显然更加清洁.有没有办法在C#中做到这一点?
我正在尝试使用 C# 中的 Zip 操作,如此处所述。考虑这个代码片段:
int[] numbers = new[] { 1, 2, 3, 4 };
string[] words = new string[] { "one", "two", "three", "four" };
var numbersAndWords = numbers.Zip(words, (n, w) => new { Number = n, Word = w });
foreach (var nw in numbersAndWords)
{
Console.WriteLine(nw.Number + nw.Word);
}
Run Code Online (Sandbox Code Playgroud)
System.ArgumentNullException如果其中一个组件出现这种情况,避免的正确方法是什么null?
例如初始化words为null,像这样
int[] numbers = new[] { 1, 2, 3, 4 };
string[] words = null;
// The next line won't …Run Code Online (Sandbox Code Playgroud) List<String> listA = new List<string> { "A1", "A2" };
List<String> listB = new List<string> { "B1", "B2" };
for(int i = 0; i < listA.Count; i++)
{
text += listA[i] + " and " + listB[i];
}
Run Code Online (Sandbox Code Playgroud)
如何使用foreach循环执行此操作?
编辑:我将此分为两个问题:
假设我有两个IEnumerable,包含许多元素.每个IEnumerable都有另一种类型T.
IEnumerable<int> ints=getManyInts();
IEnumerable<string> strings=getSomeStrings();
Run Code Online (Sandbox Code Playgroud)
我想要做的是迭代两个列表,并为每个步骤获取一个包含一个int和一个字符串的项目,直到达到最短列表的末尾.
for(Item<int,string> item in Foo.Combine<int,string>(ints, strings))
{
int i=item.Val1;
string s=item.Val2;
}
Run Code Online (Sandbox Code Playgroud)
您还可以在.NET 4中给我一个提示如何执行此操作.
我有两个列表,list1的大小为5的元素,list2的大小为6的元素.我想使用foreach语句迭代更大的列表大小(例如,在这种情况下为6),但问题是我没有使用if条件来检查哪个列表更大.那么我该怎么做必要的任务呢.
if (list1.Count>list2.Count) // here I donot want to use if statement
{ // do it in 1 statement only
Size=list1.Count;
foreach (var item in list1)
{
// do something
}
}
else
{
Size = list2.Count;
foreach (var item in list2)
{
// do something
}
}
Run Code Online (Sandbox Code Playgroud) 我有2个阵列
string[] Namesvalues = Names.Split(',');
string[] TotalValues = Total.Split(',');
Run Code Online (Sandbox Code Playgroud)
上面两个数组都有完全相等的值.我想要做的是并行迭代上面两个数组,并希望从两个数组中逐个获取值.
谁能告诉我怎么办?
我的wcf服务方法中有两个数据表.我想使用c#在列表中添加这些数据表的所有行.
我正在使用foreach循环来添加数据表的所有行.我想不出办法做这样的事,
foreach (DataRow dr in dt.Rows && DataRow dr1 in dt1.Rows)
{
lst.Add(
new GetData{week = dr["Week_Number"].ToString()
, Total_Created = dr["Total_Created"].ToString()
, Total_Open = **dr1**["Total_Open"].ToString()}
);
Run Code Online (Sandbox Code Playgroud)
}
我试图打印一次打印每个值:
像这样的东西.
让我假装对象letters包含"一,二......十"
然后有numbers一个包含"1,2,3,4 ... 10" 的对象
现在,如果我想要循环打印:
One
1
Two
2
Three
3
Run Code Online (Sandbox Code Playgroud)
循环怎么样?
我试过这样的:
foreach (var i in letters)
{
Console.WriteLine(i);
foreach(var a in numbers)
{
Console.WriteLine(a);
}
}
Run Code Online (Sandbox Code Playgroud)
但这回归:
One
1
2
Two
1
2
Three
1
2
Run Code Online (Sandbox Code Playgroud)
结果不是我想要的......
如何嵌套循环以使其按照我想要的方式打印?