2012-09-02 45 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

非常感谢。 –

相关问题