【发布时间】:2011-03-18 00:11:07
【问题描述】:
还有没有办法为可选方法参数使用运行时值?
【问题讨论】:
标签: c# .net optional-parameters
还有没有办法为可选方法参数使用运行时值?
【问题讨论】:
标签: c# .net optional-parameters
可选参数必须是常量,因为它们被写为属性的值。因此,它们继承了属性值具有的所有限制。
无法直接对运行时值进行编码。但是,您可以使用以下模式接近
public void MyApi(SomeType type = null) {
type = type ?? new SomeType();
...
}
【讨论】:
可选参数被编译到程序集中,因此(就像指定为 const 的任何参数一样)它们必须是编译时常量。
不,您不能将执行时值用作可选参数。
【讨论】:
可选参数在编译时确定,如果调用参数太少的方法,则将其替换到方法中。它们是通过向方法的 IL 中的参数添加属性来处理的。
因此,它们需要在编译时完全解析(既用于创建,因为它们是属性,也用于使用时)。无法将运行时值用于可选方法参数。
【讨论】: