2012-10-25 36 views
3

我想有類似tkis「int?」的東西但對於字符串。你知道,如果我不會給數據參數,我不會得到錯誤。我需要一些想法來解決這個問題。字符串?爲方法中的C#

Example(4); 

public void Example(int, string?){} 

對於你們所有人,我給予積分。感謝幫助。主題[關閉] :)

+5

字符串默認爲空,這就是爲什麼不需要'string?'。 – yogi

回答

11

這不能作爲string已經是引用類型,所以已經是空。所述?後綴爲Nullable<T>語法糖,所以int?相當於Nullable<int> ...和Nullable<T>具有where T : struct的約束,即T必須是一個非空值類型...不包括string

換句話說,你可以只寫

public void Example(int x, string y) 
{ 
    if (y == null) 
    { 
     ... 
    } 
} 

注意,這是使它成爲一個可選的參數不同。傳遞一個值null仍然傳遞一個值。如果你想成爲一個可選參數,你可以做到這一點:

public void Example(int x, string y = "Fred") 

... 

Example(10); // Equivalent to Example(10, "Fred"); 
+0

喬恩爲你的例子,你也可以寫'if(x == null)'但帶有警告:) – Habib

+0

@Habib:是的,但我不確定它是相關的... –

4

在C#4.0中,您可以通過編寫

public void Example (int a, string b = null) {} 

否則使用可選參數,你可以重載的方法

public void Example (int a) {} 
public void Example (int a, string b) {} 
4

字符串類型採取空默認情況下,你做因爲它已經是引用類型,所以不需要使其可以爲空。你可以這樣使用它。

public void Example(int i, string s) 
{ 

} 

與空呼叫,它將被

Example(null, null); 
4

System.String是引用類型,所以你可以分配給一個字符串變量空不聲明變量爲空。

2

你需要給字符串參數一個默認值嗎?

例如

Example(4); 

public void Example(int x, string y = null) 
{ 
    // etc 
}