У меня есть значение, которое является либо числовым (любым) числовым типом, либо нумерованным числовым типом. Мне нужно проверить, равен ли это значение нулю или нет.Как определить, является ли значение равным нулю?
В принципе у меня есть это:
public bool IsZero(object value)
{
if (value == null)
return false;
//lifted from the mvc sources, so I guess it's exhaustive
HashSet<Type> numericTypes = new HashSet<Type>(new Type[] {
typeof(byte), typeof(sbyte),
typeof(short), typeof(ushort),
typeof(int), typeof(uint),
typeof(long), typeof(ulong),
typeof(float), typeof(double),
typeof(decimal)
});
Type type = Nullable.GetUnderlyingType(value.GetType()) ?? value.GetType();
if (!numericTypes.Contains(type))
return false;
// how do I get the value here ?
}
Я не вижу простой способ сравнения целочисленного значения с Int нулем, и значение байта с нулевым байтом.
Обходной путь, который я вижу, - связать правильно введенное нулевое значение с каждым типом и проверить его, но я хотел бы повторно использовать решение, если мне в конечном итоге нужен метод «IsOne».
Хорошее предложение, недостатком является то, что 'null' также будет считаться нулевым. –
@ShadowWizard. Нужно также иметь нулевую проверку - я пропустил это, потому что он уже присутствует в вопросе OPs. Ответ хороший ответ! –