グローバル配列がありますが、テキスト ボックス イベントが変更されるまでメモリを割り当てませんでした。配列が作成されたかどうかをどのように考慮することができますか?! 「new arr[6]」を一度実行したい。
ありがとうございました
私は通常、このような情報にアクセスするための読み取り専用のプロパティまたは関数を追加し、必要に応じて基になるデータを作成します。
private static int[] m_Array;
public static int[] Arr
{
get
{
if (m_Array == null)
{
m_Array = new int[6];
}
return m_Array;
}
}
Lazy<>クラスでも遅延作成(割り当て、インスタンス化) を行うことができます。
// Lazy creation of integer array with 6 items (declaration only, no physical allocation)
private static Lazy<int[]> m_Array = new Lazy<int[]>(() => new int[6]);
public static int[] Arr {
get {
return m_Array.Value; // <- int[6] will be created here
}
}
値 (この場合は配列) が作成されているかどうかを確認するか、IsValueCreatedを使用しない場合はいつでも:
if (m_Array.IsValueCreated) {
...