这是如何获取可选参数的默认值的后续问题?
如果参数具有默认值,则获取指示默认值的值。
此属性仅在执行上下文中使用。在仅反射上下文中,请改用 RawDefaultValue 属性。
当方法调用中未指定实际值时使用默认值。参数可以有一个默认值为 null。这与未定义默认值的情况不同。
如果参数具有默认值,则获取指示默认值的值。
此属性可以在执行上下文和仅反射上下文中使用。
当方法调用中未指定实际值时使用默认值。参数可以有一个默认值为 null。这与未定义默认值的情况不同。
文档非常相似,除了一个用于反射上下文而另一个不是。那有什么区别?什么时候DefaultValue
在没有反射的情况下使用过?我的意思是我们如何在没有反射的情况下获得默认值?我错过了什么吗?
更新
我创建了两个这样的重载:
public void Required(string value)
{
}
public void Optional(string value = "", int i = -1)
{
}
我测试过:
var f = requiredInfo.GetParameters().Select(p => p.DefaultValue).ToArray();
var g = requiredInfo.GetParameters().Select(p => p.RawDefaultValue).ToArray();
var h = optionalInfo.GetParameters().Select(p => p.DefaultValue).ToArray();
var i = optionalInfo.GetParameters().Select(p => p.RawDefaultValue).ToArray();
//f equals g and h equals i in every way!
那么鉴于我的测试显示(全部在反射上下文中)根本没有区别,有什么区别?