T
может быть классом, у которого нет конструктора по умолчанию: в этом случае новый T()
будет недопустимым оператором.
Если вы хотите вернуться с объектом по умолчанию, вы можете использовать Activator.CreateInstance
вместо возврата default(T)
, как показано ниже:
return Activator.CreateInstance(typeof(T));
, если вы хотите передать в него параметры, тогда используйте, как показано ниже:
return (T)Activator.CreateInstance(typeof(T), args);