Я написал перегружен статическими TryParse
методов для следующих типов Nullable
: int?
, short?
, long?
, double?
, DateTime?
, decimal?
, float?
, bool?
, byte?
и char?
. Ниже приведены некоторые из них:типов TryParse Обнуляемых обобщенно
protected static bool TryParse(string input, out int? value)
{
int outValue;
bool result = Int32.TryParse(input, out outValue);
value = outValue;
return result;
}
protected static bool TryParse(string input, out short? value)
{
short outValue;
bool result = Int16.TryParse(input, out outValue);
value = outValue;
return result;
}
protected static bool TryParse(string input, out long? value)
{
long outValue;
bool result = Int64.TryParse(input, out outValue);
value = outValue;
return result;
}
Логика одинакова во всех методах, за исключением того, что они используют разные типы. Невозможно было бы использовать дженерики, чтобы мне не было так много избыточного кода? Подпись будет выглядеть следующим образом:
bool TryParse<T>(string input, out T value);
Благодаря
Одна из причин, общий метод для этого не подходит не все '' struct's имеют методы TryParse', но вы не можете использовать общие ограничения, чтобы только совместимых типов во время компиляции. – Sam
Кстати, вам не хватает '?' После второго 'T' в предложенной вами сигнатуре метода. – Sam