спасибо за эту информацию изнутри.
ростой универсальный тип с уникальным универсальным параметром, ограниченным ссылочными типами:
class A<T> where T : class
{
public bool F(T r1, T r2)
{
return r1 == r2;
}
}
СгенерированныйИллинойс от csc.exe это:
ldarg.1
box !T
ldarg.2
box !T
ceq
Таким образом, каждый параметрв штучной упаковке прежде чем приступить к сравнению.
Но если ограничение указывает, что «T» никогда не должен быть типом значения,почему компилятор пытается установитьr1
а такжеr2
?