2011-08-07 70 views
0

我如何给一个类实例一个现有变量的名称。我想这样string hex = "BF43F"; Zeugh hex = new Zeugh();但它错了。我想创建一个具有Zeugh类属性的对象BF43F。给一个类实例一个变量的名称

+0

实例别一般来说,名称都是一样的。 –

+0

@jayt csharp:你真的不清楚你在做什么。为什么变量是否命名为BF43F? – StriplingWarrior

+0

BF43F是我想创建的对象的id和名称。每个while循环都会给hex赋予不同的值。 –

回答

7

听起来像是你想要一个Dictionary<string, Zeugh>。例如:

var d = new Dictionary<string, Zeugh>(); 
string hex = "BF43F"; 
d.Add(hex, new Zeugh()); 

(后下)

Zeugh it = d["BF43F"]; 
+0

我该如何参考字典中使用新Zeugh()创建的对象? –

+1

@jayt:就像我在回答中所说的那样(和一个字符串变量也可以在那里使用)一样,就像'd [“BF43F”]一样。如果您想知道是否存在特定名称,请使用'd.TryGetValue'。要查找所有名称/对象对,请使用'foreach(KeyValuePair d)条目''。 –

0

你不能在同一个范围中具有相同名称声明两个变量。
如果您以后访问变量hex,编译器应该如何知道您的意思是“BF43F”字符串还是“Zeugh”对象?

或者你是否想要一个与Zeugh对象具有相同属性的对象,但是有一个额外的字符串属性用于保存字符串“BF43F”?

你可以创建另一个类,从Zeugh继承并有一个额外的字符串属性:

public class ExtendedZeugh : Zeugh 
{ 
    public string AdditionalString { get; set; } 
} 

然后,您可以将字符串“BF43F”存储在这个属性:

var hex = new ExtendedZeugh(); 
hex.AdditionalString = "BF43F"; 
+0

我想他想创建一个类型为Zeugh的BF43F变量,但他只知道在运行时给变量(即BF43F“)的名称。 –

+0

恰恰是这种情况。 –

+0

在这种情况下,我会选择Ben Voigt的方法 –

相关问题