这是一个后续问题如何获取可选参数的默认值?
从文档,默认值 :
获取指示默认值,如果该参数有一个默认的值。
此属性仅用于执行上下文。 在只反射上下文中,使用RawDefaultValue属性。
当在方法调用未指定的实际值是默认值被使用。 参数可以有一个默认值是零。 这是从没有定义的默认值的情况下是不同的。
从文档,RawDefaultValue :
获取指示默认值,如果该参数有一个默认的值。
该属性可以在两个执行上下文和只反射上下文中使用。
当在方法调用未指定的实际值是默认值被使用。 参数可以有一个默认值是零。 这是从没有定义的默认值的情况下是不同的。
该文档是如此相似,除了一个用于反射上下文和其他不。 有什么区别是什么? 当曾经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!
那么,什么是差给出我的测试表明(全部反射上下文中)没有什么区别呢?