首页 > 解决方案 > 默认参数值到另一个参数

问题描述

我想做如下的事情:

private void MyMethod(int param1, int param2 = param1){}

目的是使 param2 成为可选参数,如果未指定,则为其赋予与第一个参数相同的值。

这可能吗?

我知道我可以使用可为空的类型并在方法主体中进行检查和分配。我也知道我可以通过重载来实现这一点。我特别想知道这在签名中是否可行。

我正在使用.Net 4.0

谢谢

标签: c#

解决方案


这可能吗?

不可以。参数的默认值必须是以下之一:

  • 编译时间常数(例如数字或字符串文字)
  • 参数类型的默认值,例如default(Foo)default(从 C# 7.1 开始)
  • 值类型的“零”值,例如new Guid()

不幸的是,它非常严格。


推荐阅读