首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# 'for‘循环中的多个初始化

C# 'for‘循环中的多个初始化
EN

Stack Overflow用户
提问于 2009-11-02 06:15:54
回答 12查看 92.4K关注 0票数 66

如何(如果可能的话)在C# for循环中初始化多个不同类型的变量?示例:

代码语言:javascript
复制
for (MyClass i = 0, int j = 1; j<3; j++,i++)
EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2009-11-02 06:23:08

这是不可能的。将其中一个声明放在循环之前:

代码语言:javascript
复制
MyClass i = 0;
for (int j = 1; j < 3; j++, i++)

或者为了对称,这两个都是:

代码语言:javascript
复制
MyClass i = 0;
int j = 1;
for (; j < 3; j++, i++)

也有可能其中一个变量比另一个变量更主要。在这种情况下,让一个变量作为循环变量,并分别处理另一个变量可能更好,如下所示:

代码语言:javascript
复制
MyClass i = 0;
for (int j = 0; j < 3; j++)
{
    ...
    i++;
}

请注意,如果ij属于同一类型,则可以在for循环中声明它们:

代码语言:javascript
复制
for (int i = 0, j = 1; j < 3; j++, i++)
票数 104
EN

Stack Overflow用户

发布于 2014-03-09 20:19:47

当然这是可以做到的。只需使用dynamic关键字:

代码语言:javascript
复制
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;
}

祝你有愉快的一天!

票数 49
EN

Stack Overflow用户

发布于 2010-08-04 23:35:53

是的,这是可以做到的。可以在for语句中初始化不同类型的变量,但不能在for语句中声明不同类型的变量。为了在for语句中初始化不同类型的变量,必须在for循环之前声明所有类型。例如:

代码语言:javascript
复制
int xx;
string yy;
for(xx=0, yy=""; xx<10; xx++)
    {
    ....
    }

编辑添加更多信息以确保完整性。这超出了OP的要求,但可能对其他人有帮助。在for循环中初始化相同类型的变量很简单,只需用逗号分隔初始化即可。您还可以在第三部分中更改多个变量。在第二个比较部分中不能有多个逗号分隔的部分,但可以使用&& ||和!基于多个变量生成复杂的布尔值部分。

代码语言:javascript
复制
for(int i=0, j=0, k=99; i<10 && k<200; i++, j++, k += 2)

但是,创建复杂到难以理解所发生的事情的for语句并不是一种好的做法。

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1658557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档