还有一种方法可以为可选方法参数使用运行时值吗?
答案 0 :(得分:12)
可选参数必须是常量,因为它们是作为属性的值写出的。因此,它们继承了属性值具有的所有限制。
无法直接编码运行时值。但是,你可以接近以下模式
public void MyApi(SomeType type = null) {
type = type ?? new SomeType();
...
}
答案 1 :(得分:5)
可选参数被编译到程序集中,因此(就像指定为const
的任何内容一样)它们必须是编译时常量。
不,您不能将执行时间值用作可选参数。
答案 2 :(得分:5)
可选参数在编译时确定,如果调用参数太少的方法,则替换为方法。它们通过在方法的IL中为参数添加属性来处理。
因此,它们需要在编译时完全解析(两者都用于创建,因为它们是属性,但也是在使用时)。无法为可选方法参数使用运行时值。