C#3.0では、intにnullを代入できますか?タイプ(?CLR int型に構造体です):nullで初期化されたC#値のタイプ
int? a = null;
いますが、カスタム構造体を定義する場合:
MyStruct a = null;
:
struct MyStruct
{
}
は、このコードのコンパイル時にエラーがありますエラーは次のとおりです。
Cannot convert null to 'Example.MyStruct' because it is a non-nullable value type
int? CLRの構造体なので、私はそれにnullを代入することができます。 nullが暗黙のうちにキャストされているか、または証明書intにボックス化されているとしますか?ヌル値を表す値。どのように正確に行われますか?どのように私は行を実行することが可能であるような方法で体mystructを拡張することができます。
MyStruct a = null;
この質問の興味深いタイミング。私はJonの本(C#in Depth)のnullable型についての章を読んでいます。すべてのC#開発者はそれを読むべきです!ありがとうジョン。 – Bryan
私はちょうど私がそのコメントを支払っていないことを指摘したいと思います:) –
あなたの声明「これは本当に言語機能であることに注意してください」は、CLR *が*(後で述べるように) 'Nullable <>'はボクシングとアンボクシングの操作において特別に構造化されています。IMHOはこれをランタイム機能にしています(いくつかの '?' – Lucero