-1

我有大量嵌套的 foreach 循环,并且我用完了要使用的变量名......我可以做这样的事情吗:

 //int i = 1
 string "number"+i = new String("FirstElement");

我已经看过一些关于 C 和 javascript 等语言的帖子,但我不知道如何在 C# 中做到这一点。

如果您不能在其他变量之后命名变量:否则如何解决这个问题?

4

4 回答 4

4

否则,这个问题可以通过使用有意义的变量名来解决 - 用完名称将意味着用尽事物试图实现的概念,这很难相信。

如果您的要求是使用一组变量,则将它们放在一个集合中;如果要让n个变量都严格按名称定义,则显式命名它们,依此类推。

于 2013-08-20T10:38:55.380 回答
2
var a = new List<int>(); 
for(int i=0;i<100;i++) 
{    
     a.Add(i); 
}
Console.WriteLine(a[0]);
Console.WriteLine(a[1]);
etc....

这样您就可以制作包含 100 个元素的列表,您可以通过以下方式访问它们nameoflist[index]

于 2013-08-20T10:37:05.130 回答
1

不久前,我问了一个类似的问题:

Python - 创建多个对象的巧妙方法?

基本上,如果您有许多非常相似的变量,例如 variable_1、variable_2 等,那么这通常表明您应该改用数组或变量列表。

因此,与其创建 10 个单独的字符串变量,不如创建一个字符串列表(或数组)。

于 2013-08-20T10:39:42.737 回答
0

你正在做的方式在 C# 中不起作用。您不能在运行时创建变量。如果你想你必须使用一个列表来存储你的变量名和值。因此,您最好创建一个类来保存变量和值的名称。

class Variable
{
   string Name;
   string  Value;
}

现在创建另一个类来保存变量

class VaraibleHolder
{
    List<Variable> Variables;
    VariableHolder()
    {
        Variables = new List<Variables>(); 
    } 

    public void Add(Variable Vbl)
    {
        Variable vbl = Variables.SingleOrDefault(v=>v.Name == Vbl.Name);
        if(vbl == null)
        {
            Variables.Add(vbl);  
        } 
    }

    public void Remove(string VblName)
    {
        //this is a lamda expression.
        Variable vbl = Variables.SingleOrDefault(v=>v.Name == VblName);
        if(vbl != null)
        {
            Variables.Remove(vbl);  
        }    
    }

    public Variable GetVariable(string VblName)
    {
         Variable vbl = Variables.SingleOrDefault(v=>v.Name == VblName);
         return vbl;  
    } 
}

因此,您可以使用变量持有者在运行时创建和存储变量。希望这会帮助你。

于 2013-08-20T10:53:50.427 回答