c# - 为什么Point和Rectangle不能作为可选参数?

标签 c# .net geometry arguments optional-parameters

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

  • 默认为空

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

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

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

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

最佳答案

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

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

如果您想改用可空类型:

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

关于c# - 为什么Point和Rectangle不能作为可选参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12235653/

相关文章:

javascript - 我可以更改参数还是操作是静态的/"locked down"吗?

c# - .NET 中不能继承什么类型的类?

c# - "Dialogs must be user-initiated."与 Silverlight 3 中的 SaveFileDialog

javascript - 谷歌地图圆半径适合 map

algorithm - 如何找到直线和矩形之间的交点?

c++ - std::function 创建临时文件时内存访问错误

c# - 使用 MVVM 模式将列表传递给类

c# - 使用 Microsoft.SqlServer.Management.Smo 从 StoredProc 获取结果列而不执行它

C#通过附加可变数量的空格使字符串列表的元素唯一

c# - .Net 内存增长问题