Если у меня есть параметр универсального типа, который является типом значения, и я хочу знать, равно ли значение значению по умолчанию, я проверяю его следующим образом:
static bool IsDefault<T>(T value){
where T: struct
return value.Equals(default(T));
}
Если у меня нетПараметр универсального типа, тогда кажется, что я должен был бы использовать отражение.Если метод должен работать для всех типов значений, то Есть ли лучший способ выполнить этот тест, чем то, что я делаю здесь?:
static bool IsDefault(object value){
if(!(value is ValueType)){
throw new ArgumentException("Precondition failed: Must be a ValueType", "value");
}
var @default = Activator.CreateInstance(value.GetType());
return value.Equals(@default);
}
С другой стороны: есть ли что-то, что я здесь не рассматриваю в связи с оценкой структур Nullable?