Рассматривая тему ограничения обобщений, не понял, каково практическое применение ограничения на конструктор. Вот есть пример класса, например студента:
class Student
{
public Student(){}
}
А вот есть обобщенный класс:
class Class2
public Class2()
{
typeTinClass2 = new T();
}
}
И допустим еще какая то тривиальная вызывающая часть программы:
class Program
{
static void Main()
{
Class2
}
}
Вопрос простой - в каких реальных ситуациях это можно использовать? Допустим есть ограничение на класс и интерфейс, зачем они нужны осознать не сложно, потому что сразу понятно когда и как это может быть использовано. Но как можно использовать ограничение на конструктор? Да, есть возможность в обобщенном коде создать экземпляр класса такого типа, который был передан в <>, я так же понимаю что есть например такая вот возможность:
Console.WriteLine(vasiliy.typeTinClass2.someField);
Но в каких ситуациях это вообще может потребоваться? Какая задача должна передо мной стоять, что бы мне потребовалось использовать ограничение на конструктор?
Ответ
Но в каких ситуациях это вообще может потребоваться?
Например, когда при описании класса-фабрики, который имеет какой-нибудь метод типа
T CreateObj
Если ты не установишь это ограничение, то не сможешь внутри метода вызвать метод new => тебе придется обращаться напрямую через рефлексию(ограничение позволяет переложить это на плечи компилятора) к конструктору без параметров, которого может и не быть=> программа может упасть.
Комментариев нет:
Отправить комментарий