C 中的問號

2021-05-25 10:36:31 字數 918 閱讀 7913

c#中的問號

在c#中有個較為重要,而常被一些人忽視的符號——問號(?)。在這裡整理一下它在c#的幾種情況:

可空型別修飾符「t?」:可空型別的基礎型別可以是任何非可空值型別或任何具有struct約束的型別引數,但不能是可空型別或引用型別。例如:int?代表是可空的整形,而int??則是無效型別。即可空型別可以表示其基礎型別的所有值和乙個額外的空值。語法t?是system.nullable的縮寫形式。可空型別具有乙個hasvalue的bool型別唯讀屬性,當可空型別例項的該屬性為true時,則表示該例項是非空例項,包含乙個已知值value;hasvalue為false時,訪問value屬性將導致system.invalidoperationexception。可空型別t?具有乙個型別為t的單個引數的公共建構函式,如new int?(123)將獲得乙個值為123的int?型別例項。從t?到由t實現的任何介面都存在裝箱轉換,並且從由t實現的任何介面都存在到t?的拆箱轉換。但是任何情況下可空型別都不滿足介面約束,即使基礎型別實現了該特定介面。

條件運算子「x ? y : z」: 「x ? y : z」的意思大部分程式設計師應該都熟悉,稍微囉嗦一下:) 如果表示式x為true,則計算y;如果x為false,則計算z。省卻if{}else{}的簡單形式了。

空合併運算子「??」:該運算子是在泛型出現後,c#詞法語法中新增加的標記,同時出現的還有乙個「::」(命名空間別名限定符)。形式為「a??b」的空合併表示式要求a為可空型別或引用型別。如果a為非空則表示式「a??b」返回的結果為a;否則返回b。空合併運算子為結合運算子,即操作時從右向左進行組合的。如,「a??b??c」的形式按「a??(bb??cc)」計算。

曾有人說過「細節決定勝負」,我們程式設計師應該更好的把握程式語言的細節才能更好的保證軟體質量。

C 中的?問號

如果你看到c 中的 問號腦袋裡便充滿問號,那麼這個貼子便是為你而寫的。有人說 細節決定成敗 細節就意味著繁瑣,像我這樣浮躁的人現在都已經習慣了繁瑣,如果你還不習慣繁瑣的話,那麼就把這個貼子當作一次練習機會吧。在c 中 有三種用法。1 可空型別修飾符 引用型別可以使用空引用表示乙個不存在的值,而值型別...

C 中的問號

c 中的問號 在c 中有個較為重要,而常被一些人忽視的符號 問號 1.可空型別修飾符 t?可空型別的基礎型別可以是任何非可空值型別或任何具有struct約束的型別引數,但不能是可空型別或引用型別。例如 int?代表是可空的整形,而int?則是無效型別。即可空型別可以表示其基礎型別的所有值和乙個額外的...

C 中的問號

c 中的問號 運算子 條件運算子 通常被稱為三元條件運算子,根據 boolean 表示式的值返回兩個值之一。下面是條件運算子的語法。運算子 運算子稱作 null 合併運算子。如果此運算子的左運算元不為 null,則此運算子將返回左運算元 否則返回右運算元。第三個就是型別後面帶乙個問號 如 int?i...