私は、以下のコードから、タイプAの静的フィールドはデフォルトでnullになりますが、その型の変数は少なくともNULL値に初期化する必要があることがわかります。誰もその違いをもう少し説明できますか?ありがとうなぜ静的フィールドはデフォルトでnullですか?
class Program
{
static A _a; //it is null by default
static void Main(string[] args)
{
A nonStaticA; //empty reference, exception when used
A correctA=null;
}
}
class A
{
}
これは静的フィールドではなく、デフォルト値(nullの場合はnull、数字の場合は0、boolの場合はfalseなど)に初期化されるすべてのフィールド(クラスレベルの変数)です。 –
他にどんな価値があるでしょうか? – dvhh
Lojは、関数変数のように静的メンバのコンパイル警告/エラーがないことを意味していると思います。これは、コンパイラは静的メンバーがどこかで初期化されていないと想定できないためです(実際にはできますが、そうではありません)。ローカル変数の場合、コンパイラは初期化されていないと不満を持ちます。 –