C 其它特性(可空型別,空合併操作符,匿名方法)

2022-05-08 14:39:11 字數 1064 閱讀 3934

1.可空型別:表示在值型別的正常取值範圍內再加上乙個null值

(1)結構:可空型別是泛型結構nullable的例項,其宣告為:public struct nullablewhere t : struct,語法t?是nullable的簡寫形式,這兩種形式是等效的:

nullablemynullableint = new nullable(),等價於int ? mynullableint = null;

(2)可空型別包含以下例項成員:

1).hasvalue:唯讀屬性,判斷是否有值,如果當前值非空,返回true,否則返回false

2).value:唯讀屬性,如果當前值非空,可以正常訪問,否則說明value不包含有意義的值,此時訪問value時會丟擲異常invalidoperationexception

3).getvalueordefault():例項方法,如果當前值非空(hasvalue為true),返回vlaue的值,否則返回t型別的預設值(即私有欄位value的預設值)

4).getvalueordefault (t defaultvalue):例項方法,如果當前值非空(hasvalue為false),返回vlaue的值,否則返回預設值defaultvalue

2.空合併操作符

空合併即  ??     他會對左右兩個運算元進行判斷:如果左邊的書不為null,則返回左邊的書,如果左邊的書為null,則返回右邊的書,這個操作符可以用於可空型別和引用型別,但是不能用於值型別,因為??

會將左邊的數和null進行比較,值型別是不能與null比較的。

例子:int ? nullable = null;

int ?  nullhasvalue = 1;

int  temp = nullable??12 = 12;

int temp1 = nullhasvalue??123 = 1;

3.匿名方法

就是沒有名字的方法,所以只能在定義的時候呼叫,其他時候無法呼叫。

class program

來投票了", nickename); };

votedelegate("張三");

console.read();}}

C 可空型別與空合併操作符

讓我們先來看一段簡單 datetime date new datetime console.writeline date.tostring int myint new int console.writeline myint.tostring double mydouble new double co...

可空型別修飾符與空合併運算子

可以讓乙個值型別賦值為null,例如給乙個struct賦值為null或判斷乙個struct是否被賦過值 if m teststruct null 單問號 宣告該值型別為可空型別 宣告乙個可空型別有以下三種方式 int a null int b newint?nullable int c newnul...

C 的新特性 可空型別

隨著c 語言最新標準的出爐,現在它也提供了對可空型別的支援。這個小變化將會在處理那些包括可選項的資料庫記錄時非常有用。當然在其他地方,它也是非常有用的。簡單說來,可空資料型別就是包含了所定義的資料型別或者值的空 null 的型別。c 的ecma 334標準提供了對所有c 值型別的可空版本的描述。定義...