Это просто означает это при ограничении на тип значения (второй абзац)
static bool TryToCompare<T>(T first, T second) where T : struct
{
return first == second; // not legal
return first.Equals(second); // legal
}
Без ограничения типа-значения для универсального, это также говорит это (первый абзац)
static bool TryToCompare<T>(T first, T second)
{
return first == second; // not legal
return first == null; // legal
return first.Equals(second); // legal
}
Если вы ограничите T
ссылочным типом, вы можете обойтись с помощью ==
static bool TryToCompare<T>(T first, T second) where T : class
{
return first == second; // legal
return first == null; // legal
return first.Equals(second); // legal
}