1

我想知道为什么这不会编译:

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
    }

换句话说,为什么编译器不把第一种情况翻译成第二种呢?这种设计选择背后的原因是什么?

4

1 回答 1

1

默认参数值被编译为只能保存文字值的 CIL 元数据(如属性)。

C# 编译器在那里做了一些魔术来允许小数。

于 2012-12-05T20:30:38.853 回答