C 2 0 點滴(不斷補充中 )

2021-05-06 23:41:31 字數 1275 閱讀 5849

1.nullable型別可以這麼用!

int?

cursor;

//其它邏輯

cursor =(

++cursor) 

??default

(int);

上述**的含義是,如果cursor為空值,則取int型的預設值0,否則,將cursor值增加1。特別注意++cursor,當cursor為空值的時候,++cursor仍然返回空值(cursor+1同樣返回空值)。

關於nullable型別,有點覺得不是太好,那就是賦值的時候可以直接賦值,取值的時候卻要通過value屬性獲取,比如   

int?cursor;

cursor =5

;  //

直接賦值

intx 

=cursor.value; 

//通過value屬性取值

如果能直接透明地取值就好了,比如像這樣

int?

cursor;

cursor =5

;  intx =

cursor; 

2.關於泛型約束的思考

曾經思考過這樣乙個問題,在下面示例的情況中,泛型是否有價值。比如,我想建立乙個容器內,裝入容器內的元素必須實現了介面icomparable。

public

class

container

<

t>

where t : icomparable

public

class

container2

上面container類使用了泛型和約束,container2只是乙個簡單的類。表面看起來,container2能夠做與container一樣的事情,那麼泛型實現的container有什麼優勢了?在於兩點:

(1)container2 物件可以容納任意型別(只要實現了icomparable介面)的物件,而某個特定的container物件只能容納特定型別(當然實現了icomparable介面)的物件。也就是說,container2 中的元素的型別是多樣的,而某個特定的container物件中的元素的型別卻是統一的。

(2)多繼承。如果元素型別要從icomparable和另外乙個介面iexample繼承,那麼,如果不使用泛型實現,則一定會存在向下轉換的操作,而泛型實現可以避免這一點:

public

class

container

<

t>

where t : icomparable ,iexample

C 2 0 點滴(不斷補充中 )

1.nullable型別可以這麼用!int?cursor 其它邏輯 cursor cursor default int 上述 的含義是,如果cursor為空值,則取int型的預設值0,否則,將cursor值增加1。特別注意 cursor,當cursor為空值的時候,cursor仍然返回空值 curs...

ESFramework解疑 點滴(不斷補充中)

1.imessageheader的實現在 2006.03.31 msn上有個叫mediar的朋友問我esframework中imessageheader的實現在 答案是,imessageheader在你的具體應用中實現,而不是在esframework框架中。imessageheader僅僅規定了你的...

C 2 0中,SerialPort執行方式

c 2.0中,serialport執行方式 點評 這幾天一直用這個控制項 可是老是有問題 也許這篇文章是解決問題最終的辦法了 serialport 中串列埠資料的讀取與寫入有較大的不同。由於串列埠不知道資料何時到達,因此有兩種方法可以實現串列埠資料的讀取。一 執行緒實時讀串列埠 二 事件觸發方式實現...