少し前に、Nullable <>値型はクラスであり、値型をカプセル化し、HasValueにブール値を与えると思いました。nullの暗黙のキャスト演算子を使用して、BCLで実装されました。
しかし、構造体であるため、これをどのように達成できますか?Nullable <>構造体はCLRにとって「特別」ですか?
少し前に、Nullable <>値型はクラスであり、値型をカプセル化し、HasValueにブール値を与えると思いました。nullの暗黙のキャスト演算子を使用して、BCLで実装されました。
しかし、構造体であるため、これをどのように達成できますか?Nullable <>構造体はCLRにとって「特別」ですか?
Nullable<T>
[mscorlib]System.Nullable`1
は通常の構造体として定義されていますが、CLR内には、プロパティに従ってnullのインスタンスをボックス化/ボックス化解除するための特別なフックがありHasValue
ます。これについての詳細はここにあります
これがNullable型に関するMSDNの記事です。
http://msdn.microsoft.com/en-us/library/1t3y8s4s(v=VS.100).aspx
Nullable型が構造体のインスタンスであると誤解していない限り、Nullable<>で何を取得しようとしているのかわかりませんSystem.Nullable<T>
。
Nullable<>
mscorlib内に実装された構造体です。
X?
1つの特別なことは、のエイリアスとして認識するC#コンパイラにありNullable<X>
ます。