これは愚かなように見えるかもしれませんが、下のコードがエラーを出す理由を教えてください。このように初期化するとコンパイル時にエラーが発生するのはなぜですか?
私はこのような初期化を行うと、実行されます!
class Program
{
static int abc = 110;
static void Main(string[] args)
{
Console.WriteLine(abc);
}
}
これは愚かなように見えるかもしれませんが、下のコードがエラーを出す理由を教えてください。このように初期化するとコンパイル時にエラーが発生するのはなぜですか?
私はこのような初期化を行うと、実行されます!
class Program
{
static int abc = 110;
static void Main(string[] args)
{
Console.WriteLine(abc);
}
}
abc = 110
はメソッド本体内にありません。宣言時に変数を初期化することはできますが、その代入をメソッド本体の外側にするコード行を持つことはできません。クラスファイルが無効です。
静的なイニシャライザを使用して、インラインで割り当てられていない場合は実行する必要があります。そうでない場合は、コンストラクタまたはメソッドで割り当てる必要があります。
class Program
{
static int abc;
static Program(){
abc = 110;
}
static void Main(string[] args)
{
Console.WriteLine(abc);
}
}
詳細はpageをご確認ください。
コードがエラーを出しています。構文は正しいですか? –
私はc#の構文を編集しました。追加の構文の質問については、提供されているリンクを参照してください。 – Submersed
.. "静的なコンストラクタを介して" .... –
クラスメンバの初期化は宣言と一緒に行なわなければなりません。あなたは効果的でないメソッドの外に "コード"を効果的に持っています。 –
@DStanley:ありがとうございました! –