У меня есть следующий тестовый код С#:
class MyItem
{
MyItem( int a ) {}
}
class MyContainer< T >
where T : MyItem, new()
{
public void CreateItem()
{
T oItem = new T( 10 );
}
}
Visual Studio не может скомпилировать его, ошибка находится в строке, где используется "новое":
'T': cannot provide arguments when creating an instance of a variable type
Возможно ли в С# создать объект родового типа без конструктора без параметров? Это не проблема, чтобы сделать такую вещь в С++-шаблонах, поэтому мне очень любопытно, почему я не могу сделать то же самое в С#. Может быть, какое-то дополнительное "where" требуется или синтаксис отличается?