C# 如何使用“;用于”;C中的循环#

C# 如何使用“;用于”;C中的循环#,c#,dynamic,C#,Dynamic,如何使用C#中的“for”循环创建动态递增变量?这样地: track\u 1、track\u 2、track\u 3、track\u 4。依此类推。您不能创建动态命名的变量。您所能做的就是创建一些集合或数组,并使用它进行操作。 我认为最适合你的课程是普通课程: List listWithDynamic=new List(); 对于(int i=1;i

如何使用C#中的“for”循环创建动态递增变量?这样地:
track\u 1、track\u 2、track\u 3、track\u 4。
依此类推。

您不能创建动态命名的变量。您所能做的就是创建一些集合或数组,并使用它进行操作。 我认为最适合你的课程是普通课程:

List listWithDynamic=new List();
对于(int i=1;i
我不知道是否了解您的问题,但我会尝试:

for(var i = 1; i < yourExclusiveUpperbound; i++)
{
   var track = String.Format("$track_{0}", i);
   // use track
}

假设您需要字符串:

for (int i = 1; i < limit; i +=1)
{
    string track = string.Format("track_{0}", i);
    ...
}

显而易见的解决方案

for (var i = 0; i < 10; i++)
{
    var track = string.Format("track_{0}", i);

}
foreach (var track in Enumerable.Range(0, 100).Select(x => string.Format("track_{0}", x)))
{

}
基于运营商的解决方案这有点老套,但仍然很有趣

for(vari=newfrob(0,“track_{0}”);i<100;i++)
{
控制台写入线(i.ValueDescription);
}
结构泡沫
{
公共int值{get;private set;}
公共字符串ValueDescription{get;private set;}
私有字符串格式;
公共Frob(int值,字符串格式)
:此()
{
价值=价值;
ValueDescription=string.Format(格式,值);
_格式=格式;
}
公共静态Frob运算符++(Frob值)
{
返回新Frob(value.value+1,value.\u格式);
}
公共静态Frob运算符--(Frob值)
{
返回新Frob(value.value-1,value.\u格式);
}
公共静态隐式运算符int(Frob值)
{
返回值;
}
公共静态隐式运算符字符串(Frob值)
{
返回值.ValueDescription;
}
公共覆盖布尔等于(对象对象对象)
{
如果(obj是Frob)
{
返回((Frob)对象)。值==值;
}
else if(obj是字符串)
{
返回((字符串)obj)=ValueDescription;
}
else if(对象为int)
{
返回((int)obj)=值;
}
其他的
{
返回基数等于(obj);
}
}
公共覆盖int GetHashCode()
{
返回值;
}
公共重写字符串ToString()
{
返回值描述;
}
}
按以下步骤操作:

for (int i = 0; i < lenght; i ++)
{
    any work do in loop
}
for(int i=0;i
不,我们不能在循环中创建动态命名的变量。但是,还有其他优雅的方法来解决这个问题,而不是创建动态命名的变量

一种方法是,在循环之前创建一个数组或列表,并将值存储在循环中的数组/列表项中。您可以稍后在代码中的任何位置访问数组/列表。如果知道要使用哪个变量(track_1,track_2,…),只需从数组/列表(tracks[1],tracks[2],…)中访问它即可

List tracks=newlist();
对于(int i=1;i
介意发布一些代码吗?你们中的哪些人已经做过/尝试过了?为什么要这样做?如果是for循环,他可能知道制作数组的前期计数possible@RuneFS根据OP的
我认为他不知道
。Count
是的,可以更改内部for循环的迭代次数循环,但如果他知道迭代次数,这是不常见的。我想他知道他需要多少东西。然而,所有这些当然只是假设,如果其中任何一个是错误的,他就必须使用列表或类似的东西,即使只有一个局部变量。@Jonathan Dickinson真的吗?是否创建具有动态名称的变量?你能给我看一些代码吗?我想他想动态地生成变量名,就像在一些动态类型语言中一样。+1是为了弄清楚他可能不是在谈论字符串。
for (var i = 0; i < 10; i++)
{
    var track = string.Format("track_{0}", i);

}
foreach (var track in Enumerable.Range(0, 100).Select(x => string.Format("track_{0}", x)))
{

}
for (var i = new Frob(0, "track_{0}"); i < 100; i++)
{
    Console.WriteLine(i.ValueDescription);
}

struct Frob
{
    public int Value { get; private set; }
    public string ValueDescription { get; private set; }
    private string _format;

    public Frob(int value, string format)
        : this()
    {
        Value = value;
        ValueDescription = string.Format(format, value);
        _format = format;
    }

    public static Frob operator ++(Frob value)
    {
        return new Frob(value.Value + 1, value._format);
    }

    public static Frob operator --(Frob value)
    {
        return new Frob(value.Value - 1, value._format);
    }

    public static implicit operator int(Frob value)
    {
        return value.Value;
    }

    public static implicit operator string(Frob value)
    {
        return value.ValueDescription;
    }

    public override bool Equals(object obj)
    {
        if (obj is Frob)
        {
            return ((Frob)obj).Value == Value;
        }
        else if (obj is string)
        {
            return ((string)obj) == ValueDescription;
        }
        else if (obj is int)
        {
            return ((int)obj) == Value;
        }
        else
        {
            return base.Equals(obj);
        }
    }

    public override int GetHashCode()
    {
        return Value;
    }

    public override string ToString()
    {
        return ValueDescription;
    }
}
for (int i = 0; i < lenght; i ++)
{
    any work do in loop
}
List<String> tracks = new List<String>();
for (int i = 1; i < limit; i++)
{
    Track track = new Track();
    tracks.Add(track);
    ...
}