我有大量嵌套的 foreach 循环,并且我用完了要使用的变量名......我可以做这样的事情吗:
//int i = 1
string "number"+i = new String("FirstElement");
我已经看过一些关于 C 和 javascript 等语言的帖子,但我不知道如何在 C# 中做到这一点。
如果您不能在其他变量之后命名变量:否则如何解决这个问题?
我有大量嵌套的 foreach 循环,并且我用完了要使用的变量名......我可以做这样的事情吗:
//int i = 1
string "number"+i = new String("FirstElement");
我已经看过一些关于 C 和 javascript 等语言的帖子,但我不知道如何在 C# 中做到这一点。
如果您不能在其他变量之后命名变量:否则如何解决这个问题?
否则,这个问题可以通过使用有意义的变量名来解决 - 用完名称将意味着用尽事物试图实现的概念,这很难相信。
如果您的要求是使用一组变量,则将它们放在一个集合中;如果要让n个变量都严格按名称定义,则显式命名它们,依此类推。
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]
不久前,我问了一个类似的问题:
基本上,如果您有许多非常相似的变量,例如 variable_1、variable_2 等,那么这通常表明您应该改用数组或变量列表。
因此,与其创建 10 个单独的字符串变量,不如创建一个字符串列表(或数组)。
你正在做的方式在 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;
}
}
因此,您可以使用变量持有者在运行时创建和存储变量。希望这会帮助你。