Если у меня есть параметр универсального типа, который является типом значения, и я хочу знать, равно ли значение значению по умолчанию, я тестирую его следующим образом :
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);
}
Кстати, есть ли что-нибудь, что я не рассматриваю здесь в отношении оценки структур, допускающих значение NULL?