有很多書上都提出過乙個建議:不要返回
null
物件。
比如下面的
getusers
方法:
public
class
user
public
string name
}
public
list
getusers()
如果其他方法由
getusersof***
,getusersby***
之類的方法,那麼就有大量
list
result = new
list
();
考慮到這一點,可以將
new list()
封裝到方法中,這就是」工廠
」模式了.
因為可能不是
list,
也許是stack
更或者是
observablecollection
所以配合泛型,**如下:
public
static
class
emptyfactory
}
使用如下:
list
emptylist = new
list
();
stack
emptystack = new
stack
();
observablecollection
emptyobserable = new
observablecollection
();
emptylist = emptyfactory.empty
>();
emptystack = emptyfactory.empty
>();
emptyobserable = emptyfactory.empty
>();
雖然這樣寫可以滿足要求,但是可以發現基本沒什麼好處,寫
emptyfactory
還不如new
來得快。
不過如果能夠快取物件的話,也許
emptyfactory
有作用。
考慮到這一點,為
emptyfactory
增加快取機制的**如下,使用
dictionary
來實現
publicstatic
class emptyfactory
else
}
}測試**如下:
不過這種方法有乙個缺陷,對於值型別而言,需要裝箱。
其根本原因是因為emptyfactory不知道t是什麼,如果emptyfactory知道t的話,那麼就可以使用dictionary的快取了。
解決這個問題的思路是將emptyfactory變成泛型類:
**如下:
publicstatic
class emptyfactorywhere t : ienumerable, new()
else
}
}使用的時候,只需要
當然也可以emptyfactory>.empty();
為什麼不用enumersble.empty方法呢?
因為enumerable.empty返回的是ienumerable物件。
不要返回null之EmptyFactory
有很多書上都提出過乙個建議 不要返回 null 物件。比如下面的 getusers 方法 public class user public string name public list getusers 如果其他方法由 getusersof getusersby 之類的方法,那麼就有大量 list...
springboot json返回null問題處理
在開發過程中,我們需要統一返回前端json格式的資料,但有些介面的返回值存在 null或者 這種沒有意義的字段。以上不僅影響理解,還浪費頻寬,這時我們可以統一做一下處理 不返回空欄位,或者把null轉成 spring 內建的json處理框架是jackson。我們可以對它配置一下達到目的,具體 如下....
AfxGetMainWnd返回NULL也是可能的
afxgetmainwnd返回null也是有可能的。因為 afxwin inline cwnd afxapi afxgetmainwnd 而cwnd cwinthread getmainwnd cwnd cwinthread getmainwnd 而m pmainwnd有時候的值如果還沒有被設定,a...