为什么 Point 和 Rectangle 不能用作可选参数?

2024-04-30

我试图将一个可选参数传递给一个几何函数,称为offset,可能会或可能不会指定,但 C# 不允许我执行以下任何操作。有办法做到这一点吗?

  • 默认为空

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

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

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

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

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

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

如果您想使用可为 null 的类型:

public void LayoutRelative(.... Point? offset = null)
{
    if (offset.HasValue)
    {
        DoSomethingWith(offset.Value);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Point 和 Rectangle 不能用作可选参数? 的相关文章

随机推荐