2015-04-06 18 views
1

我有兩個函數僅在第二個參數上有所不同。 例子:在將空值傳遞給C中的函數時消除了模糊性#

public IEnumerable<Thing> Get(string clause, List<Things> list) 
{ 
} 

public IEnumerable<Thing> Get(string clause, List<OtherThing> list) 
{ 
} 

我想調用這個函數的第一個實例,但我想傳遞null作爲第二個參數。有沒有辦法指定null的「類型」?

+2

FWIW:我可能會改變設計總是要求/接受一個colleciton,即使是空的。 – user2864740

回答

8

角色null文本:

Get("", (List<Things>)null) 

存儲它在一個變量第一:

List<Things> list = null; 
Get("", list); 

使用反射。 (我不打算舉一個例子,因爲它不必要的複雜。)

+0

我曾想過第二種解決方案,但我不喜歡它的樣子。我認爲第一個實際上會拋出一個異常,但你是正確的,它不會。謝謝。 – bpeikes

-2

在這種情況下,一個可選參數將是有用的。重寫如此

public IEnumerable<Thing> Get(string clause, List<Things> list = null) 
{ 
    if(list==null){} 
    else{} 
} 
+0

當'null'作爲第二個參數傳遞時,這與調用這兩個方法時的不明確性無關。 – Servy