我想知道为什么这不会编译:
public static void SomeFunction(Guid someGuid = Guid.NewGuid())
{
// Do stuff
}
带有消息
“'someGuid'的默认参数值必须是编译时常量”
虽然重载版本会编译:
public static void SomeFunction()
{
SomeFunction(Guid.NewGuid());
}
public static void SomeFunction(Guid someGuid)
{
// Do stuff
}
换句话说,为什么编译器不会在第二种情况下翻译第一种情况?这个设计选择背后的原因是什么?
答案 0 :(得分:1)
默认参数值被编译为CIL元数据(如属性),只能保存文字值。
C#编译器在那里做了一些魔术来允许小数。