しかし、配列で固定の値を定義しようとすると、静的コンストラクタを実装する必要があります。
他の方法は?と思って調べると、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";
}
}
{
// ↓コンパイルエラー
//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 件のコメント:
助かりました
コメントを投稿