Последнее время часто использую методы с обобщенными аргументами. Довольно часто приходится сравнивать значения обобщенных типов между собой, сравнивать с default(T).
Конструкции типа
while (!EqualityComparer<T>.Default.Equals(t, default(t))
{
// do something
}
довольно сильно утомляют глаз.
Следующий класс здорово облегчает жизнь:
public static class Comparer
{
public static int Compare<T>(T a, T b)
{
return Comparer<T>.Default.Compare(a, b);
}
public static bool Equals<T>(T a, T b)
{
return EqualityComparer<T>.Default.Equals(a, b);
}
public static bool IsNullOrDefault<T>(T value)
{
return Equals(default(T), value);
}
}
Теперь можно писать так:
while (!Comparer.Equals(t, default(t))
{
// do something
}
И даже так:
while (!Comparer.IsNullOrDefault(t))
{
// do something
}
Естественно, это имеет смысл только для сравнения компарером по-умолчанию.
Комментариев нет:
Отправить комментарий