Подтвердить что ты не робот

Дополнительные параметры С# 4.0 - Как указать необязательный параметр типа "Guid"?

Здесь мой метод:

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
}

до сих пор нет любви.

Что мне не хватает?

4b9b3361

Ответ 1

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

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

Должен сделать трюк.

Ответ 2

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

Ответ 3

возможно, это помогло бы (используя оператор и тип с нулевым значением Guid)

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