5

我正在尝试将一个可选参数传递给一个名为 的几何函数,offset它可能指定也可能不指定,但 C# 不允许我执行以下任何操作。有没有办法做到这一点?

  • 默认为空

    错误:“”类型的值不能用作默认参数,因为没有标准转换为“System.Drawing.Point”类型

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

    错误:'offset' 的默认参数值必须是编译时常量

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

1 回答 1

16

如果您的默认值不需要任何特殊初始化,则不需要使用可为空的类型或创建不同的重载。您可以使用以下default关键字:

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

如果您想改用可为空的类型:

public void LayoutRelative(.... Point? offset = null)
{
    if (offset.HasValue)
    {
        DoSomethingWith(offset.Value);
    }
}
于 2012-09-02T11:47:20.423 回答