如何(如果可能的话)在C# for循环中初始化多个不同类型的变量?示例:
for (MyClass i = 0, int j = 1; j<3; j++,i++)发布于 2009-11-02 06:23:08
这是不可能的。将其中一个声明放在循环之前:
MyClass i = 0;
for (int j = 1; j < 3; j++, i++)或者为了对称,这两个都是:
MyClass i = 0;
int j = 1;
for (; j < 3; j++, i++)也有可能其中一个变量比另一个变量更主要。在这种情况下,让一个变量作为循环变量,并分别处理另一个变量可能更好,如下所示:
MyClass i = 0;
for (int j = 0; j < 3; j++)
{
...
i++;
}请注意,如果i和j属于同一类型,则可以在for循环中声明它们:
for (int i = 0, j = 1; j < 3; j++, i++)发布于 2014-03-09 20:19:47
当然这是可以做到的。只需使用dynamic关键字:
public static void Main(string[] args) {
for (dynamic x = 0, y = new MyClass { a = 20, b = 30 }; x < 100; x++, y.a++, y.b--) {
Console.Write("X=" + x + " (" + x.GetType() + "\n" +
"Y.a=" + y.a + ",Y.b=" + y.b + " (" + y.GetType() + "\n");
}
}
class MyClass {
public int a = 0, b = 0;
}祝你有愉快的一天!
发布于 2010-08-04 23:35:53
是的,这是可以做到的。可以在for语句中初始化不同类型的变量,但不能在for语句中声明不同类型的变量。为了在for语句中初始化不同类型的变量,必须在for循环之前声明所有类型。例如:
int xx;
string yy;
for(xx=0, yy=""; xx<10; xx++)
{
....
}编辑添加更多信息以确保完整性。这超出了OP的要求,但可能对其他人有帮助。在for循环中初始化相同类型的变量很简单,只需用逗号分隔初始化即可。您还可以在第三部分中更改多个变量。在第二个比较部分中不能有多个逗号分隔的部分,但可以使用&& ||和!基于多个变量生成复杂的布尔值部分。
for(int i=0, j=0, k=99; i<10 && k<200; i++, j++, k += 2)但是,创建复杂到难以理解所发生的事情的for语句并不是一种好的做法。
https://stackoverflow.com/questions/1658557
复制相似问题