68

私はこの記事を見ていましたが、持ち上げられた演算子を説明する VB.NET の例に従うのに苦労しています。同等の C# の例やチュートリアルはないようです。私は一般的に演算子のオーバーロードの経験があまりないので、null 許容型を読みながら VB.NET の同等物に慣れようとすることは、おそらく開始するのに最適な場所ではありません...

持ち上げられた演算子の説明と、それらが null 許容型でどのように使用されるかを説明できる人はいますか? null許容型自体は演算子をオーバーロードせず、それが表す基になる型の演算子を使用するということですか?

持ち上げられたオペレーターに関する SO に関する情報はあまりないようです。

4

2 に答える 2

130

リフトされた演算子は、null許容でないフォームにすでに存在する演算子を「リフト」することにより、null許容型を処理する演算子です。したがって、たとえば、次の場合:

int? x = 10;
int? y = 10;
int? z = x + y;

その「+」演算子は解除されます。実際には存在しませんNullable<int>が、C#コンパイラは存在するかのように動作し、正しいことを行うためのコードを生成します。(ほとんどの場合、どちらかのオペランドがnullかどうかを確認します。nullの場合、結果はnullになります。そうでない場合は、両方のオペランドをnull許容値にラップ解除し、通常の演算子を使用して、結果をラップバックします。 null許容値。ただし、比較に関してはいくつかの特殊なケースがあります。)

詳細については、 C#仕様のセクション6.4.2(リフトされた変換演算子)および7.3.7(リフトされた演算子)を参照してください。

于 2010-07-30T09:19:41.680 に答える