C#4.0可选参数 - 如何指定“Guid”类型的可选参数?

时间:2010-08-04 00:36:22

标签: c# .net c#-4.0 guid optional-parameters

这是我的方法:

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

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

private const emptyGuid = Guid.Empty;

然后将方法签名更改为:

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

仍然没有爱。

我缺少什么?

3 个答案:

答案 0 :(得分:20)

您是否尝试将其设置为Guid ala:

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

应该做的伎俩。

答案 1 :(得分:2)

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

答案 2 :(得分:2)

也许它会有所帮助(使用operator ??和Guid nullable类型)

public void some_method(string name, Guid? guid = null)
{
        _name = name;
        _guid = guid ?? Guid.NewGuid();
}