Я написал общий метод enum TryParse
, который я хотел бы использовать с необязательными параметрами, но поскольку он содержит ключевое слово out
, оказывается, что это невозможно.
Здесьпример кода:
public static class Enum<T>
{
public static bool TryParse(string value, bool ignoreCase = true, out T returnedValue)
{
//Not really relevant to the question, but here for completeness.
try
{
returnedValue = (T)Enum.Parse(typeof(T), value, ignoreCase);
return true;
}
catch
{
returnedValue = default(T);
return false;
}
}
}
К сожалению, это недопустимо, поскольку я получаю знакомую ошибку:
Optional parameters must appear after all required parameters
Обычно это имеет смысл, но не здесь.Я считаю, что язык должен быть достаточно «умным», чтобы определить, что все в порядке - что ключевое слово out
1012 * должно быть последним и что оно не может иметь значение по умолчанию.Для заметки, это то, что происходит, если вы пытаетесь установить значение по умолчанию:
A ref or out parameter cannot have a default value
Кто-нибудь сталкивался с этим самостоятельно?Если так, как они исправили это?Если нет, я должен поднять это в Microsoft Connect?
Я действительно понимаю, что, если это не сработает, мне придется создать еще один метод, но без параметра ignoreCase
, изатем просто выполните возврат в одну строку, но передайте true
для ignoreCase
.
Заранее спасибо!