[過去ログ] ふらっと C#,C♯,C#(初心者用) Part158 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
216: (ワッチョイ 9194-izbf) 2023/04/11(火)19:01 ID:yYayl2te0(1/5) AAS
外部リンク:books.google.co.jp
の内容に関しての質問なんだけど、
Fooのコンストラクタをstaticコンストラクタに書き換えると、何で3 3になるの?

Console.WriteLine(Foo.X); // 3

class Foo
{
public static Foo Instance = new Foo();
public static int X = 3;

static Foo() => Console.WriteLine(X); // 3
}
218: (ワッチョイ 9194-izbf) 2023/04/11(火)19:14 ID:yYayl2te0(2/5) AAS
>>217
いや、だから static を付けない場合は、最初の出力は 0 なんだって
で、何故 static を付けると、3 になるかという事を聞きたいわけ
220
(1): (ワッチョイ 9194-izbf) 2023/04/11(火)19:19 ID:yYayl2te0(3/5) AAS
>>219
で、static を付けた場合と付けなかった場合の出力結果の違いはどういう理由?
221
(1): (ワッチョイ 9194-izbf) 2023/04/11(火)19:21 ID:yYayl2te0(4/5) AAS
>>220
デフォルトコンストラクタ Foo() の直前の static の事ね
224: (ワッチョイ 9194-izbf) 2023/04/11(火)19:39 ID:yYayl2te0(5/5) AAS
>>222-223
staticを付けない、コンストラクタの場合、class Fooの最初の行でインスタンスが生成された時点では、Xが3に初期化されてないので、0になるが、
staticを付けた静的コンストラクタの場合、class Fooの最初の行とは無関係に、既にXが3に初期化された状態で Console.WriteLine(X) が実行済みなのね

public static Foo Instance = new Foo();

をコメントアウトして実行させてみて、やっと気付いた

有難う
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.058s