2012-09-02 39 views
5

我試圖將一個可選的參數傳遞給一個叫做offset的幾何函數,它可能會或可能不會被指定,但C#不允許我執行以下任何操作。有沒有辦法做到這一點?爲什麼不能使用Point和Rectangle作爲可選參數?

  • Null作爲默認

    錯誤:類型「的值」,因爲沒有標準轉換到類型不能被用作默認參數「System.Drawing.Point」

    public void LayoutRelative(.... Point offset = null) {} 
    
  • 空默認

    錯誤:默認對於「偏移」參數值必須是一個編譯時常

    public void LayoutRelative(.... Point offset = Point.Empty) {} 
    

回答

11

如果您的默認值,不需要任何特殊的初始化,你不需要使用可空類型,或者創建不同的重載。 可以使用default關鍵字:

public void LayoutRelative(.... Point offset = default(Point)) {} 

如果你想使用可空類型來代替:

public void LayoutRelative(.... Point? offset = null) 
{ 
    if (offset.HasValue) 
    { 
     DoSomethingWith(offset.Value); 
    } 
} 
+0

告訴我如何使用可空路,我會接受你的答案。剛剛刪除了他的答案的那個人。 –

+0

非常感謝。 –

相關問題