プロパティでは第.NET
一級市民であると想定されていますが、IL
コードではプロパティのゲッターとセッターはget_
PropertyNameとset_
PropertyNameとして実装されています。
class Property
{
int Value { get { return 42; } }
int get_Value() { return 6 * 9; }
void set_Value(int i) { } // Error even though Value is a read only property
}
出力:
エラーCS0082:タイプ「SO.Property」は、同じパラメータータイプを持つ「get_Value」というメンバーをすでに予約しています
エラーCS0082:タイプ「SO.Property」は、同じパラメータータイプを持つ「set_Value」というメンバーをすでに予約しています
設計者が.NET
ユーザーコードと衝突する可能性のある名前を使用することにしたのはなぜですか?不正な文字を使用した可能性があります(Javaが$
内部クラスのものに使用するため)。