示例#1
0
        static void Main(string[] args)
        {
            //Account account = new Account();
            //IBank<Account> ordinaryBank = new Bank<Account>();
            //ordinaryBank.DoOperation(account);

            //DepositAccount depositAcc = new DepositAccount();
            //IBank<DepositAccount> depositBank = ordinaryBank;
            //ordinaryBank.DoOperation(depositAcc);

            //Console.ReadLine();

            IBank <DepositAccount> depositBank = new Bank();

            depositBank.DoOperation();

            IBank <Account> ordinaryBank = depositBank;

            ordinaryBank.DoOperation();

            Console.ReadLine();

            Console.WriteLine("GENRIC INTERFACE");

            var driver = DriverFactory.Get(1);

            driver.Do();

            driver = DriverFactory.Get(2);
            driver.Do();

            Console.ReadLine();
        }
示例#2
0
        public static void Main(string[] args)
        {
            IBank <DepositAccount> depositBank = new Bank();

            depositBank.DoOperation();

            IBank <Account> ordinaryBank = depositBank;

            ordinaryBank.DoOperation();

            Console.ReadLine();
        }
示例#3
0
        public static void Start()
        {
            IBank <DepositAccount> depositBank = new Bank();

            depositBank.DoOperation();

            IBank <Account> ordinaryBank = depositBank;

            ordinaryBank.DoOperation();

            Console.ReadLine();
        }
示例#4
0
        public static void Main(string[] args)
        {
            var             account      = new Account();
            IBank <Account> ordinaryBank = new Bank <Account>();

            ordinaryBank.DoOperation(account);

            var depositAcc = new DepositAccount();
            IBank <DepositAccount> depositBank = ordinaryBank;

            depositBank.DoOperation(depositAcc);

            Console.ReadLine();
        }
示例#5
0
        static void Main(string[] args)
        {
            //Account account = new Account();
            //IBank<Account> ordinaryBank = new Bank<Account>();
            //ordinaryBank.DoOperation(account);

            //DepositAccount depositAcc = new DepositAccount();
            //IBank<DepositAccount> depositBank = ordinaryBank;
            //ordinaryBank.DoOperation(depositAcc);

            //Console.ReadLine();

            IBank <DepositAccount> depositBank = new Bank();

            depositBank.DoOperation();

            IBank <Account> ordinaryBank = depositBank;

            ordinaryBank.DoOperation();

            Console.ReadLine();
        }
示例#6
0
        static void Main(string[] args)
        {
            // normal array
            // int[] arr_1 = new int[5];
            // int[] arr_2 = new int[] {1,2,3,4,5};
            // int[] giant_Array = GetGiantArray();
            // int el_1 = giant_Array[0];
            // int el_2 = giant_Array[126547];
            // int el_3 = giant_Array[9999996];

            //Linked list
            //LinkedList<int> linkedList = GetGiantLinkedList();
            //var found = linkedList.Find(9999999);
            //linkedList.AddLast(new LinkedListNode<int>(100000001));

            //ArrayList
            ArrayList arrayList = new ArrayList();

            arrayList.Add(12);
            arrayList.Add(13);
            arrayList.Add("string");
            var arrayListElement = arrayList[0];
            //int sum = 0;
            //foreach (var el in arrayList)
            //{
            //sum += (int) el;
            //}

            //Generic List
            List <int> list = new List <int>();

            list.Add(1);
            list.Add(2);
            list.AddRange(new int[] { 3, 4, 5, 6, 7, 8, 9 });
            Console.WriteLine("Лист из элементов");
            PrintList(list);
            var listElement = list[0];

            Console.WriteLine("Можно обращаться по индексу как в обычном массиве");
            Console.WriteLine($"list[0] = {listElement}");
            list.Remove(4);
            Console.WriteLine("Убрали 4 из листа");
            PrintList(list);
            list.RemoveAt(0);
            Console.WriteLine("Убрали элемент по нулевому индексу");
            PrintList(list);
            list.RemoveAll(c => c > 5);
            Console.WriteLine("Убрали все элементы больше 5");
            PrintList(list);

            //Generics generates classes per each instance
            Foo <int> .Bar++;
            Console.WriteLine("А теперь выведем на экран наше статическое поле");
            Console.WriteLine(Foo <double> .Bar);

            //Generics in methods
            Console.WriteLine("Дженерики в методах");
            CheckIfString("this is string");
            CheckIfString <int>(12);

            //Constraints
            IGenericInterface <ValidGeneric> validGeneric = null;

            //IGenericInterface<NonValidGeneric> nonValidGeneric = null; // не скомпилится
            // IGenericInterface<AnotherNonValidGeneric> anotherNonValidGeneric = null; // тоже не скомпилится

            CheckIfStringConstraint(new ValidGeneric());
            //CheckIfStringConstraint(new NonValidGeneric()); // не скомпилится
            //CheckIfStringConstraint(new AnotherNonValidGeneric(12)); // и это тоже

            // Ковариантность
            //IBank<DepositAccount> depositBank = new Bank();
            //depositBank.DoOperation();

            //IBank<Account> ordinaryBank = depositBank;
            //ordinaryBank.DoOperation();

            // Контрвариантнось
            Account         account      = new Account();
            IBank <Account> ordinaryBank = new Bank <Account>();

            ordinaryBank.DoOperation(account);

            DepositAccount         depositAcc  = new DepositAccount();
            IBank <DepositAccount> depositBank = ordinaryBank;

            depositBank.DoOperation(depositAcc);

            Console.WriteLine();
            Console.ReadKey();
        }