2012-05-07 84 views
1

我想在for语句中创建名为“Item”的类的新实例,但我不知道如何动态给出名称。在for循环语句中动态创建属性名称

for (i=0; i < Counter; i++) 
{ 
    MyClass "XXXX" = Class.method(); 
} 

如何创建2个字符串并给出名称? - 用于实例 -

for(i=0;i<2;i++){ 
    string name + i = "Hello" 
} 

EDITED

我已经得到了一些建议,以达到我的解决方案,我可以创造一个字典。

 var bomItems = new Dictionary<Item, Item>(); 

     for (int i = 0; i < Count; i++) 
     { 
      Item bomItem = inn.newItem("Part BOM","add"); 
      bomItems.Add(bomItem + i, bomItem); 
     } 

但是我在“bomItem + i”中得到了一个合理的错误。我不能应用操作数'+'。明显。

有没有人对此有任何答案?

谢谢。

+0

你采取有关字典? – BlackBear

+2

请在这里解释用例。我敢打赌,这不是你真正想要的。 –

+0

那么,你的问题是什么? – Rahul

回答

4

您coud使用集合像List<String>

var list = new List<String>(); 
for (i=0; i<Counter; i++){ 
    list.Add("Hello " + i); 
} 

编辑 Accroding您的意见要通过它分配的名称访问变量。那么你应该使用Dictionary来代替(如果名称是唯一的)。

例如:

var names = new Dictionary<String, String>(); 
for (i=0; i < Counter; i++){ 
    names.Add("Name" + i, "Hello"); 
} 

现在你可以用这种方式给定的字符串键的字符串值:

String name10 = names["Name10"]; // "Hello" since all values are "Hello" in your sample 
+0

我想这样做:“string name + i =”Hello“” – kmxillo

+0

@kmxillo :如果我正确地理解了你,你可以使用'Dictionary',看看我编辑的答案。 –

+0

是的,你明白了。但它不能将字典从字典转换为myClass。 myClass name = new Dictionary (); 谢谢 – kmxillo

5

使用数组!

string[] myArray = new string[Counter]; 
for (int i = 0; i < Counter; i++){ 
    myArray[i] = "Hello"; 
} 
+0

即使对于引用类型对象,数组是否显着快于列表? –

+3

@JohanLundberg对于微不足道的案件只是略微和可以忽略;请参阅http://stackoverflow.com/questions/454916/performance-of-arrays-vs-lists –

+0

@BalaR我想给变量的名称为“你好”值。不引用数组或列表。我以wana给出一个名字为例:string name =“Hello”,稍后我将能够通过“名称”调用该值 – kmxillo

0

另一种方法是使用StringBuilder,像

var builder = new StringBuilder(); 
for (i=0; i<Counter; i++){ 
    builder.Append("Hello " + i); 
} 

和之后如果你需要完整的字符串

builder.ToString()

快速简单的字符串操作。

1

您可以使用Dictionary (TKey,TValue)类,其中键是您想要计算的字符串。

Dictionary<string, string> myDictionary = new Dictionary<string, string>(); 
for (i=0; i < Counter; i++) 
{ 
    myDictionary.Add("XXXX", "Hello"); // Matches your above example 
} 

所以XXXX是你的计数器字符串,你好会是你想要的字符串。那么你可以检索每个字符串使用

string myString = myDictionary[XXXX];