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 中串列埠資料的讀取與寫入有較大的不同。由於串列埠不知道資料何時到達,因此有兩種方法可以實現串列埠資料的讀取。一 執行緒實時讀串列埠 二 事件觸發方式實現...