良好的程式修養在於靈活運用各類語法(修飾符)。本文介紹下,在c#語言中的??(雙問號操作符)、?:(三元表示式)、?(單問好操作符)
1,??
為了實現nullable資料型別轉換成non-nullable型資料,就有了乙個這樣的操作符」??(兩個問號)「,雙問號操作符意思是取所賦值??左邊的,如果左邊為
null
,取所賦值??右邊的。
比如
int
y = x ?? -1 如果x為空,那麼y的值為-1.
於是這時候就可以把最上面第二段**改成:
string
strparam= request.params[
"param"
]??
""
;
2,?:
在使用條件操作符的時候要注意,假定條件表示式是這樣 x?y:z,
表示式型別的只能是使y 和z的變數型別之一,換句話說就是 y和z的變數型別決定這個條件表示式的型別,
無論y和z是同一型別,還是y和z不是同一型別。 如果表示式的型別和賦值型別不一致,發生編譯時錯誤 。
string
strtemp;
object
obj = strtemp ==
""
?dbnull.value:strtemp;
你編譯的時候,會報錯。因為dbnull和
string
之間沒隱式轉換,修改成如下**就可以了:
object
obj = 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...