static void Main() { MyClass1 <string> instance1 = new MyClass1 <string>(); // MyClass1 <int> instance1 = new MyClass1 <int> (); // Помилка. int - value тип. MyClass2 <int> instance2 = new MyClass2 <int>(); // MyClass2 <string> instance2 = new MyClass2 <string> (); // Помилка. string - reference тип. // Delay. Console.ReadKey(); }
static void Main() { MyClass1 <string> instance1 = new MyClass1 <string>(); //MyClass1<int> instance1 = new MyClass1<int>(); // Ошибка. int - структурный тип. MyClass2 <int> instance2 = new MyClass2 <int>(); //MyClass2<string> instance2 = new MyClass2<string>(); // Ошибка. string - ссылочный тип. // Delay. Console.ReadKey(); }
static void Main() { // В качестве аргумента типа подходит Derived, т.к., он наследуется от обоих интерфейсов. MyClass <Derived> my1 = new MyClass <Derived>(); //MyClass<IInterface> my1 = new MyClass<IInterface>(); // Ошибка. // Аргумент типа подходит, т.к., IInterface<object> наследуется от IInterface MyClass <IInterface <object> > my2 = new MyClass <IInterface <object> >(); MyClass2 <Derived> my3 = new MyClass2 <Derived>(); MyClass2 <Derived2> my4 = new MyClass2 <Derived2>(); MyClass2 <IInterface <object> > my5 = new MyClass2 <IInterface <object> >(); // Delay. Console.ReadKey(); }
static void Main() { // Як аргумент типу підходить Derived, тому що, він реалізовується від обох інтерфейсів. MyClass <Derived> my1 = new MyClass <Derived>(); // MyClass <IInterface> my1 = new MyClass <IInterface> (); // Помилка. // Аргумент типу підходить, тому що, IInterface <object> реалізовується від IInterface MyClass <IInterface <object> > my2 = new MyClass <IInterface <object> >(); MyClass2 <Derived> my3 = new MyClass2 <Derived>(); MyClass2 <Derived2> my4 = new MyClass2 <Derived2>(); MyClass2 <IInterface <object> > my5 = new MyClass2 <IInterface <object> >(); // Delay. Console.ReadKey(); }