我想有類似tkis「int?」的東西但對於字符串。你知道,如果我不會給數據參數,我不會得到錯誤。我需要一些想法來解決這個問題。字符串?爲方法中的C#
Example(4);
public void Example(int, string?){}
對於你們所有人,我給予積分。感謝幫助。主題[關閉] :)
我想有類似tkis「int?」的東西但對於字符串。你知道,如果我不會給數據參數,我不會得到錯誤。我需要一些想法來解決這個問題。字符串?爲方法中的C#
Example(4);
public void Example(int, string?){}
對於你們所有人,我給予積分。感謝幫助。主題[關閉] :)
這不能作爲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");
喬恩爲你的例子,你也可以寫'if(x == null)'但帶有警告:) – Habib
@Habib:是的,但我不確定它是相關的... –
在C#4.0中,您可以通過編寫
public void Example (int a, string b = null) {}
否則使用可選參數,你可以重載的方法
public void Example (int a) {}
public void Example (int a, string b) {}
字符串類型採取空默認情況下,你做因爲它已經是引用類型,所以不需要使其可以爲空。你可以這樣使用它。
public void Example(int i, string s)
{
}
與空呼叫,它將被
Example(null, null);
System.String是引用類型,所以你可以分配給一個字符串變量空不聲明變量爲空。
你需要給字符串參數一個默認值嗎?
例如
Example(4);
public void Example(int x, string y = null)
{
// etc
}
字符串默認爲空,這就是爲什麼不需要'string?'。 – yogi