MSDN的VS2010 命名和可选参数(C#编程指南)向我们介绍了C#中的可选参数,展示了我所期望的代码:
public void ExampleMethod(int required,
string optionalstr = "default string",
int optionalint = 10)
好的,但它还说:
您还可以使用.NET OptionalAttribute类声明可选参数。OptionalAttribute参数不需要默认值。
我阅读了MSDN的OptionalAttribute页面,并在网上搜索(显示许多人声称C#无法使用OptionalAttribute参数 - 我猜这些评论是在C# 4之前发表的?),但我找不到两个问题的答案:
如果我使用OptionalAttribute将C#参数定义为可选:
- 如果我调用该方法并未指定该参数的值,则将使用什么值?
- 该值将在编译时还是运行时评估?
default(T)
,它是 null 或零。 - James Curran