我可以在数组中放入只读字符串来迭代吗?

时间:2016-09-19 08:35:42

标签: c# arrays string initialization

我的表格的很多标题都有很多字符串,例如:

private readonly string headerOne = translateIfNeeded("headerOne");
private readonly string headerTwo = translateIfNeeded("headerTwo");
private readonly string headerThree = translateIfNeeded("headerThree");
private readonly string headerFour = translateIfNeeded("headerFour");

大约有30个。

我可以简单地将它们分组到一个数组中,以便稍后可以轻松地迭代它们吗?试图将以下内容放在我的字符串下面,但它不会让我;

private readonly string[] headers = { headerOne, headerTwo };
private readonly string[] headers = new string[]{ headerOne, headerTwo };

说“一个字段初始值设定项不能引用非静态字段[...] headerOne”。

3 个答案:

答案 0 :(得分:1)

您可以使用Dictionary<int, string>Dictionary<string, string>

Dictionary<string, string> headers = new Dictionary<string, string>();
headers.Add("headerOne", translateIfNeeded("headerOne"));
headers.Add("headerTwo", translateIfNeeded("headerTwo"));
headers.Add("headerThree", translateIfNeeded("headerThree"));
headers.Add("headerFour", translateIfNeeded("headerFour"));

您可以通过密钥迭代或(标准方式)访问该值:

string headerTwo = headers["headerTwo"];

如果你需要一个只读字典,那么从版本4.5开始就是

ReadOnlyDictionary<TKey, TValue> Class

答案 1 :(得分:0)

根据Static readonly string arrays,即使它使用静态:

public readonly ReadOnlyCollection<string> headers = new ReadOnlyCollection<string>(
  new string[] {
    headerOne,
    headerTwo,
    headerThree,
  }
);

供参考:ReadOnlyCollection(T) Class (System.Collections.ObjectModel)C# ReadOnlyCollection Tips - Dot Net Perls

答案 2 :(得分:0)

您可以定义一个List添加所有标题并轻松迭代它们,简单示例:

        List<string> headersList = new List<string>();
        headersList.AddRange(new string[] { headerOne, headerTwo, headerThree, headerFour });

        foreach (string header in headersList)
        {
            Console.WriteLine(header);
        }
        Console.ReadLine();