如何定義一個函數,以便可以選擇傳遞一個結構參數,但是能夠知道函數內部是否已通過?如何指定null作爲結構類型的默認參數
function SomeFunction(string str = null)
{
if (str == null) { ... }
}
調用不帶參數的上述功能將觸發if (str == null)...
條件:
SomeFunction();
上述方法不類型的參數工作,我所試圖實現有異曲同工之處結構。鑑於以下結構:
public struct MyStruct
{
public int SomeInt;
public double SomeDouble;
}
這會產生一個錯誤,沒有規範的轉換:
public function SomeFunction(MyStruct mystruct = null) { }
但是,當我定義功能:
public function SomeFunction(MyStruct mystruct = default(MyStruct)) { }
並調用與功能:
SomeFunction();
在輸入函數mystruct
時,對於SomeInt
包含0,對於SomeDouble
包含0.00。這些可能是合法值,這使我無法知道參數是否實際傳遞給函數或保留爲空。
我該如何定義這個參數,如果它沒有在調用中指定,我可以檢測到該函數內?
這也許是TGH指出的最好的方式。我可以忍受它,但我仍然被迫在函數調用中指定一個'null'?換句話說,我不能在調用中將它留空,因爲nullable不會爲被調用函數提供默認值。 – rwkiii 2014-10-19 04:49:38
如果你想傳遞一個空參數而不是'null',那麼使用重載的方法。 即。 '公共函數SomeFunction(){SomeFunction(null); }' – grovesNL 2014-10-19 04:51:03
明白了。謝謝。你和TGH都提供了同樣的答案。我希望我能把它們標記爲正確的......一方面TGH先回答。另一方面,他比你擁有更多的積分。 :我不喜歡因爲選擇艱難而將其標記爲答案。你提供了更多的輸入/跟進。所以謝謝。 – rwkiii 2014-10-19 04:55:14