Вчера я объяснял общие ограничения С# моим друзьям. При демонстрации ограничения where T : CLASSNAME
я взломал что-то вроде этого:
public class UnusableClass<T> where T : UnusableClass<T>
{
public static int method(T input){
return 0;
}
}
И был очень удивлен, увидев, что он скомпилирован. Однако, немного подумав, я понял, что это совершенно законно с точки зрения компилятора. UnusableClass<T>
- это такой же класс, как и любой другой, который можно использовать в этом ограничении.
Однако это оставляет пару вопросов: как этот класс можно использовать? Возможно ли
- Создать его?
- Наследовать от него?
- Вызовите его статический метод
int method
?
И если да, то как?
Если возможно какое-либо из них, каков будет тип T
?