C#:使用String Value作为Object Reference的名称

时间:2016-11-04 01:02:40

标签: c# wpf

目前,我有多个文本块,我想根据字符串的名称访问。请看下面的例子:

    TextBlock test1 = new TextBlock();
    TextBlock test2 = new TextBlock();
    TextBlock test3 = new TextBlock();
    TextBlock test4 = new TextBlock();

    public static void changeValues()
    {
        string name = "test";
        for (int i = 1; i < 5; i++)
        {
            [name + i].Text = "Wow";
        }
    }

正如您所看到的,我正在尝试访问text1,text2等。我这样做的原因是因为“name”的值可能随时更改,因此我可以重新使用此代码。我也可以使“i&lt; 5”成为“i&lt; number”并使该方法将int作为参数之一。问题当然是这实际上不起作用。我需要字符串名称作为名称给出的TextBlock的引用。任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:1)

@PetSerAl说:

var yourBlocks = new TextBlock[]
{
    new TextBlock(),
    new TextBlock(),
    new TextBlock(),
    new TextBlock()
};

foreach (var block in yourBlocks)
{
    block.Text = "Wow";
}

答案 1 :(得分:0)

字典怎么样?

Dictionary<string, string> myDictionary= 
            new Dictionary<string, TextBlock>();
myDictionary.Add("name1", mytextBlock1);
myDictionary.Add("name2", mytextBlock2);
myDictionary["name1"] = new TextBlock();
var tBlock = myDictionary["name2"];

Detail here