2009年12月26日土曜日

[.NET]C#でconst配列?

C#では、定数にconstという構文があり、固定の値を定義することができます。
しかし、配列で固定の値を定義しようとすると、静的コンストラクタを実装する必要があります。
他の方法は?と思って調べると、Array.AsReadOnlyというメソッドを使うとそれらしく実現できることがわかりました。コードはこんな感じ。

public class Class1
{
    // ↓コンパイルエラー
    //const string[] arrayData = { "111", "222" };
    // 
    ReadOnlyCollection<string> arrayData = Array.AsReadOnly<string>(new string[] { "111""222" });

    public void Test()
    {

        foreach (string str in arrayData)
        {
            System.Diagnostics.Debug.WriteLine("data=" + str);
        }

        for (int i = 0; i < arrayData.Count;i++ )
        {
            string str = arrayData[i];
            System.Diagnostics.Debug.WriteLine("data=" + str);
        }

        //↓コンパイルエラー
        //arrayData[1] = "1";
    }
}

1 件のコメント:

匿名 さんのコメント...

助かりました