Ejemplo n.º 1
0
        //types of contraints

        //where T : IComparable
        //where T : Product
        //where T : struct
        //where T : class
        //where T : new()

        static void Main(string[] args)
        {
            var book = new Book {
                ISBN = "1111", Title = "C# Advanced"
            };

            var books = new GenericList <Book>();

            books.Add(book);

            Console.WriteLine(books.GetSize());
            Console.WriteLine(books[0].Title);

            books[0] = new Book()
            {
                ISBN = "22", Title = "New Book"
            };
            var newBook = books.Get(0);

            Console.WriteLine(newBook.Title + " " + newBook.ISBN);

            //multiple generic parameters
            var dictionary = new GenericDictionary <string, Book>();

            dictionary.Add("ISBN", new Book());

            //using egeneric method
            Console.WriteLine(Utilities.Max <int>(5, 10));

            //contraint to paticular class
            var calculator = new DicountCalculator <Product>();
            var product    = new Product()
            {
                Price = 12.99, Name = "TV"
            };
            var discount = calculator.CalculateDiscount(product);

            Console.WriteLine("Discount: $" + discount);

            //using Nullable class
            var number = new Nullable <int>(5);

            Console.WriteLine("Has Value? " + number.HasValue);
            Console.WriteLine("Value: " + number.GetNullOrDefault());

            Console.ReadKey();
        }