static void Main()
        {
            // Создать ссылку из интерфейса IMyContraVarGenIF<Alpha>
            // на объект типа MyClass<Alpha>.
            // Это вполне допустимо как при наличии контравариантности, так и без нее.
            IMyContraVarGenIF <Alpha> AlphaRef = new MyClass <Alpha>();

            // Создать ссылку из интерфейса IMyContraVarGenIF<beta>
            // на объект типа MyClass<Beta>.
            // И это вполне допустимо как при наличии контравариантности,
            // так и без нее.
            IMyContraVarGenIF <Beta> BetaRef = new MyClass <Beta>();

            // Создать ссылку из интерфейса IMyContraVarGenIF<Beta>
            // на объект типа MyClass<Alpha>.
            // *** Это вполне допустимо благодаря контравариантности. ***
            IMyContraVarGenIF <Beta> BetaRef2 = new MyClass <Alpha>();

            // Этот вызов допустим как при наличии контравариантности, так и без нее.
            BetaRef.Show(new Beta());

            // Присвоить переменную AlphaRef переменной BetaRef.
            // *** Это вполне допустимо благодаря контравариантности. ***
            BetaRef = AlphaRef;

            BetaRef.Show(new Beta());
        }
Beispiel #2
0
        static void Main()
        {
            int i, j;

            // Сформировать объекты, используя фабрику.
            for (i = 0, j = 10; i < 10; i++, j--)
            {
                MyClass ob = MyClass.Factory(i, j); // Создать объект
                ob.Show();
            }
            Console.WriteLine();
        }
Beispiel #3
0
        static void Main()
        {
            MyClass ob = new MyClass();
            int     s, d;

            for (s = 0, d = 10; s < 10; s++, d--)
            {
                MyClass AnotherOb = ob.Factory(s, d); //Создать объект
                AnotherOb.Show();
            }
            Console.WriteLine();
        }
Beispiel #4
0
        static void Main()
        {
            MyClass ob1 = new ca2.MyClass(4, 5);
            MyClass ob2 = new MyClass(6, 7);

            Console.Write("ob1: ");
            ob1.Show();

            Console.Write("ob2: ");
            ob2.Show();

            if (ob1.SameAs(ob2))
            {
                Console.WriteLine("ob1 и ob2 имеют одинаковые значения.");
            }
            else
            {
                Console.WriteLine("ob1 и ob2 имеют разные значения.");
            }

            Console.WriteLine();

            // А теперь сделать объект ob1 копией объекта ob2.
            ob1.Copy(ob2);

            Console.Write("ob1 после копирования: ");
            ob1.Show();

            if (ob1.SameAs(ob2))
            {
                Console.WriteLine("ob1 и ob2 имеют одинаковые значения.");
            }
            else
            {
                Console.WriteLine("ob1 и ob2 имеют разные значения.");
            }
        }