C # 4.0 Необязательные параметры - Как указать необязательный параметр типа "Guid"? - PullRequest
12 голосов
/ 04 августа 2010

Вот мой метод:

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 ]

20 голосов
/ 04 августа 2010

Вы пытались установить его на новый экземпляр Guid ala:

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

Должен сделать свое дело.

2 голосов
/ 25 июля 2012

возможно, это поможет (с использованием оператора ?? и типа Guid, допускающего обнуляемость)

public void some_method(string name, Guid? guid = null)
{
        _name = name;
        _guid = guid ?? Guid.NewGuid();
}
2 голосов
/ 04 августа 2010

Не лучше ли перегрузить метод версией, не требующей Guid?Это решило бы проблему, и было бы лучшим дизайном, по моему мнению.Конечно, могут быть и другие ограничения, о которых я не подозреваю, что это необходимо.

...