私はC#に新たなんだと言語機能を探索しながら、私は奇妙な何かに出くわした:カッコが必要な理由を式でnullableを使用するときにC#で括弧が必要なのはなぜですか?
struct Foo
{
public Foo Identity() { return this; }
public static void Bar(Foo? foo)
{
Foo foo1 = foo?.Identity().Value; // Does not compile
Foo foo2 = (foo?.Identity()).Value; // Compiles
}
}
誰も私に説明してもらえますか?
の実際の結果である 'のプロパティを参照しています。 –
xfx
Foo?
です。 2番目のステートメントでは、 'Value'は' Nullable本当に考えているなら、null条件付き演算子を含む式の '.Value'を呼び出すことは矛盾しています(あなたはnullを期待するか、そうでないと思います)。代わりにヌル集合演算子を使用したい場合は、かっこは必要ありません。例: 'Foo foo2 = foo?.Identity()?? '; –
sstan