C#の初期化順入門: バグを産み出す魔境を乗り越える方法!
「これは変数の初期化の歴史: ~C言語は変数を初期化しない~は正しいのか?とはどう違うんだい?」
「うん。似て非なる本なので分けた。それは、プログラミング言語ごとの変数の初期化の違い、こっちはC#で初期化がトラブルになる理由と解決方法の説明がメインなんだ」
「ではこの本の目玉はなんだい?」
「ソースコード上で確かに初期化しているはずの値が読み出せない事例の紹介、読み出せない理由、解決方法だ」
「それってC#の問題?」
「いや、どの言語でも起こりえることだよ。全ての値が同時に初期化されることはない以上ね。特に循環参照なんて言語を変えても解決できないよ」
「本質としてはどの言語でも起こりえることなんだね」
「でも、それでは本が成立しないからC#ではこう言うときに起こるから注意しようと書いたわけだ」
「なるほど」
「意外とネットを検索しても確かなことがあまり書いていないことがあって、調べながら書いたところもあるぞ」
「調査にILSpyまで使ったわけだね」
「一部の初期化はどうしても分からなかったので、ILSpyで逆コンパイルして初期化の流れを確認したよ。だから、実装に立脚した正しい解説が書けているはずだ」
「なかなかの難題だね」
「だからこそ、タイトルに魔境という文字が入っているのだ」
表紙の苦労 §
「実は表紙には、タイトルが魔境だからジャングル、廃墟、探検家、美女の組み合わせの画像を入れたかったのだが、どうしてもAIがそれを上手く生成できなかったので、ジャングルの探検家風の女の顔の画像を使用してしまった」
「廃墟要素、どこにもないね」
「まあ仕方が無い。これで良いと言うことにしたよ」
「ところで表紙にInitialize Order 66って書いてあるのはどういう意味? Initialize Orderが初期化順だとすると66の意味が分からないんだけど」
「そこはネットのJedi Masterに訊いてくれ」