12

这是我的方法:

public void SomeQuery(string email = "", Guid userId = Guid.Empty)
{
   // do some query
}

userId给我一个错误,因为它必须是一个编译时常量,我理解。但即使我声明了一个常量:

private const emptyGuid = Guid.Empty;

然后将方法签名更改为:

public void SomeQuery(string email = "", Guid userId = emptyGuid)
{
   // do some query
}

还是没有爱。

我错过了什么?

4

3 回答 3

20

您是否尝试将其设置为Guidala 的新实例:

public void SomeQuery(string email = "", Guid userId = new Guid())
{
   // do some query
}

应该做的伎俩。

于 2010-08-04T00:43:36.323 回答
2

用不需要 Guid 的版本重载方法不是更好的解决方案吗?这将解决问题,并且在我看来将是一个更好的设计。当然,可能还有其他一些我不知道需要这种设计的限制条件。

于 2010-08-04T00:43:23.657 回答
2

也许它会有所帮助(使用运算符 ?? 和 Guid 可为空的类型)

public void some_method(string name, Guid? guid = null)
{
        _name = name;
        _guid = guid ?? Guid.NewGuid();
}
于 2012-07-25T08:24:43.190 回答