tonari note

オンラインゲームエンジニアの雑記

ハマった

以下のコードをご覧ください。

string str = null;
// ==
str.Fuga();

僕はこのコードを「危ない」と思って以下のように書いたんですね。

if (str != null) 
	str.Fuga();

でもなんか動かない、挙動がおかしい。
で、同僚と探りを入れていくと以下のようなコードが。

static class StringExtensions
{
	public static void Fuga(this string str)
	{
		Console.WriteLine("残念、拡張メソッドだよ");
	}
}

実行結果

nullの時でも正しく動かないといけなかったらしい。
辛かったのでメモ。