有趣的修飾符之?? ? ?

2022-03-15 09:18:53 字數 1629 閱讀 6943

良好的程式修養在於靈活運用各類語法(修飾符)。本文介紹下,在c#語言中的??(雙問號操作符)、?:(三元表示式)、?(單問好操作符)

1,??

為了實現nullable資料型別轉換成non-nullable型資料,就有了乙個這樣的操作符」??(兩個問號)「,雙問號操作符意思是取所賦值??左邊的,如果左邊為null,取所賦值??右邊的。

比如inty = x ?? -1 如果x為空,那麼y的值為-1.

於是這時候就可以把最上面第二段**改成:stringstrparam= request.params["param"]??"";

2,?:

在使用條件操作符的時候要注意,假定條件表示式是這樣 x?y:z,

表示式型別的只能是使y 和z的變數型別之一,換句話說就是 y和z的變數型別決定這個條件表示式的型別,

無論y和z是同一型別,還是y和z不是同一型別。 如果表示式的型別和賦值型別不一致,發生編譯時錯誤 。

stringstrtemp;

objectobj = strtemp ==""?dbnull.value:strtemp;

你編譯的時候,會報錯。因為dbnull和string之間沒隱式轉換,修改成如下**就可以了:

objectobj = strtemp ==""? dbnull.value: (object)strtemp;

另外條件操作符是向右關聯的,從左到右進行計算,於是a?b:c?d:e 應理解為 a?b:(c?d:e)。

3,?」?(單問號)「修飾符,是system.nullable的縮寫形式,比如int?代表是可空的整形,

例如:int? a = 1 或者int? b=null。nullable型別具有乙個hasvalue的bool型別唯讀屬性,

當nullable型別例項的該屬性為true時,則表示該例項是非空例項,包含乙個已知值value,

hasvalue為false時,訪問value屬性將導致system.invalidoperationexception。

修飾符 許可權修飾符

四種形式許可權修飾符的訪問情況 publicprotected不寫private 同乙個類中 四種都可以 同一包中的不同類 除了private剩下都可以 不同包下的子類 public protected 可以 不同包下的不同類 只有public可以 許可權修飾符 public protected 預...

C 修飾符 類修飾符和成員修飾符

c 修飾符之類修飾符 public internal partial abstract sealed static internal 本程式集內的成員可以訪問。partial 部分類,可以將乙個類分成幾部分寫在不同檔案中,最終編譯時將合併成乙個檔案,且各個部分不能分散在不同程式集中。c 修飾符之成員...

vue之修飾符

在事件處理程式中呼叫event.preventdefault 或event.stoppropagation 是非常常見的需求。儘管我們可以在 methods 中輕鬆實現這點,但更好的方式是 methods 只有純粹的資料邏輯,而不是去處理 dom 事件細節。為了解決這個問題,vue.js 為v on...