2つの構造体があり、1つが暗黙的に他の構造体に変換可能な場合は、System.Nullable<>
のバージョンも暗黙的に変換可能であるようです。同様に、構造体A
に構造体B
への暗黙的な変換がある場合は、A?
もB?
に変換されます。いくつかのメソッド内"共分散" System.Nullable <> struct
struct MyNumber
{
public readonly int Inner;
public MyNumber(int i)
{
Inner = i;
}
public static implicit operator int(MyNumber n)
{
return n.Inner;
}
}
:ここ
は一例でありMyNumber? nmn = new MyNumber(42);
int? covariantMagic = nmn; // works!
C#言語仕様バージョン4.0では、我々はこのような変換は、「事前に定義された暗黙のアイデンティティのために存在するものと読み、 「数値変換」を選択します。
は、ユーザー定義の暗黙的な変換でも機能するとはかぎりませんか?
(この質問は、このバグに関連するかもしれない:http://connect.microsoft.com/VisualStudio/feedback/details/642227/)
これらの見積もりを見る時間がありますか、手で入力するだけですか? – Blindy
@Blindy:両方!私は机の上に仕様のハードコピーを持っています、そして、私はこのセクションをコピーしました...それで、タイプミス! –
ええと、私はセクション6.4.2を逃して、6.1.4だけを読んでいました。ありがとう。 –