C#では?? ,,:?? ,, []?。?

1. NULL可能タイプ修飾子(?)

存在しないヌル基準値を表すことができる参照タイプは、値型は、一般に、ヌルとして示されていません。

例:文字列strの= nullは、コンパイルエラーが報告され;、int型私= nullの正しいです。

また、空にすることができます値の型にするために、あなたは、NULL可能タイプ修飾子を使用して、空のタイプを、使用することができ、「?」を表すために、の形として「T?」

例えば:?のIntは、日時が空の時間を表し、空のプラスチックを表します?。

Tは?、実際に可能System.Nullable(一般的な構造)短い形式です

それはあなたがTを使用するときにことを意味しますか?Tコンパイラは、コンパイル時でしょうか?可能System.Nullableの形式にコンパイル。

たとえば、次のフォームが可能System.Nullableのコンパイルされた後、INT、?。

2. 3元(オペレータ)の発現(:?)

例えば:

X、Y:Z

式xが真で表される場合、yが返されます。

xがfalseの場合、リターン・Z、

{}他{}単純な形式かどうかは省略されています。

3.空合体演算子(??)

null許容型は、デフォルト値と基準タイプを定義するために使用されます。

この演算子の左側のオペランドがnullでない場合、この演算子は、それ以外の場合は、右オペランドを返し、左オペランドを返します。

例えば:ヌルをb、それ自体はnullが返されない戻される?? B。

すなわち、右から左にするとき、組成操作右オペレータ、バインディングはnull合体演算子。

そのような「??(B ?? C)」の形に応じて「?? B ?? C」として算出されます。

4.NULLチェック演算子(?)。  

例えば、我々はXがシーケンスポイントの最初の点の座標を取得したい、最初の気持ちは次のようになります。

INT firstX = points.First()X。

しかし、ベテランは、次のようにここでは、正しいバージョンが何のNULLチェックされていないことを教えてくれます。

1つの int型firstX = nullを2  であれば(点!= NULL 3  {
 4    VAR最初= points.FirstOrDefault()。
5    あれば(第一!= NULL 6    firstX = first.X。
7 }

正しいコードをより読みを取得することは困難になってきた、正しかったです。?でC#6.0は、コードの前にオペレータの導入は、次の形式に変更することができます。

int型?firstX =点.FirstOrDefault()?。X。

この例から、我々はその基本的な使い方を見ることができます:オブジェクトがNULLの場合、後から取得した操作部材が行われていない、NULLが直接返されます

それはのために、ことに留意すべきである「?。」オペレータが戻ると、メンバーは、タイプstruct型を返すとき、NULLにすることができます「?。」と「」演算子の戻り値の型は同じではありません。

1 Point p = new Point(3, 2);
2 Console.WriteLine(p.X.GetType() == typeof(int)); //true
3 Console.WriteLine(p?.X.GetType() == typeof(int?)); //true

5"?[]"运算符:

int? first = customers?[0].Orders.Count();

(这个不太清楚,感觉微软语法糖用过头了。)

本质:都使用了语法糖,在编译阶段编译器会把特殊符号先转译成原始状态再编译。

おすすめ

転載: www.cnblogs.com/ybqjymy/p/12468481.html