Example #1
0
        static void Main(string[] args)
        {
            //37
            //decorate property
            WriteLine("Question #37: Decorate property (Attribute)");

            //36
            //registry

            //32
            WriteLine("Question #32: Delegates");
            //e) delegates are ideal for callback functions

            //30
            WriteLine("Question #30: string variable manipulations");
            String s = "NY";

            s.ToUpper();
            s.ToLowerInvariant();
            s.Clone();
            s += "er";
            WriteLine(s);
            //ReadKey();
            s.GetType(); //ctrl + e, h (inheritance hierarchy resharper)

            //29
            WriteLine("Question #29: casting, stack & heap, struts & class");
            Rectangle r = new Rectangle();

            WriteLine(r.Area);
            //ReadKey();

            //25
            //which will compile successfully?

            //24 generics C#

            //23 expando object
            WriteLine("Question #23: Expando object");

            //22
            WriteLine("Question #22: Generics, lambda op (=>), passing methods as parameters, implicit delegate");
            //https://stackoverflow.com/questions/4015451/pass-a-method-as-a-parameter
            Main22();
            //ReadKey();

            //21 again,  HTTP 404 error occurred -- later as //27
            WriteLine("Question #21 umm #27...: inheritance execution order");
            MyTest.Main21Again();
            //ReadKey();

            //21
            WriteLine("Question #21: nullables??");
            City city = new City();

            city.name = "Los Angeles";

            string labelCity = city.name;
            //string labelCountry = city.country.abbrev;

            //a)
            //string labelCountry = null;
            //if(!city.country.abbrev.HasValue)
            //b)
            string labelCountryB = null;

            if (city != null)
            {
                if (city.country == null)
                {
                    labelCountryB = "US";
                }
            }
            ////ReadKey();
            //c
            string labelCountryC = city.country != null ? (city.country.abbrev != null ? city.country.abbrev : "US") : "US";

            //d
            //exception
            //string labelCountryD = city.country.abbrev != null ? city.country.abbrev : "US";

            //e

            string labelCountryE = city?.country?.abbrev ?? "US";

            WriteLine($"Name: {labelCity}");
            WriteLine($"Country: {labelCountryB} {labelCountryC} {labelCountryE}");
            ReadLine();

            //e ??  double question mark is null-coalescing

            //20
            WriteLine("Question #20: More LINQ!");
            int[] values  = new int[] { 5, 4, 3, 4, 2, 5, 9, 4, 2, 4 };
            var   results = (from c in values orderby c select c * c).Distinct().Take(5);

            foreach (var resultt in results)
            {
                WriteLine(resultt);
            }
            WriteLine("--");
            //a
            results = values.Distinct().OrderBy(f => f * f).Take(5).Select(c => c * c);
            foreach (var resultt in results)
            {
                WriteLine(resultt);
            }
            WriteLine("--");
            //b
            IEnumerable <int> resultss = values.Select(c => c * c).Take(5).Distinct().OrderBy(f => f);

            foreach (var resultt in resultss)
            {
                WriteLine(resultt);
            }
            WriteLine("--");
            //c
            IEnumerable <int> resultc = values.Select(c => c * c).OrderBy(f => f).Distinct().Take(5);

            foreach (var resultt in resultc)
            {
                WriteLine(resultt);
            }
            WriteLine("--");
            //d
            IEnumerable <int> resultd = values.Distinct().OrderBy(f => f).Take(5).Select(c => c * c);

            foreach (var resultt in resultd)
            {
                WriteLine(resultt);
            }
            WriteLine("--");
            //cannot implicitly convert type...
            //e
//            int[] resulte = values.Select(c => c * c).Take(5).OrderBy(f => f);
//            foreach (var resultt in resulte)
//            {
//                WriteLine(resultt);
//            }
//            WriteLine("--");
            //ReadKey();


            //19
            ClassTester.Main19();
            //ReadKey();

            //17 -- skipped
            WriteLine("Question #17: System Event Log");
            //EventLogEntry.WriteEvent -- nope
            //EventLog.WriteEntry("asdf");
            //EventInstance.WriteEntry();
            //EventLog.WriteEntry();



            //16 - 1/2
            WriteLine("Question #16: Bitwise Operators");
            //https://stackoverflow.com/questions/4757447/understanding-the-behavior-of-a-single-ampersand-operator-on-integers
            bool?a = null, b = null;

            writeOutput(a & b);
            writeOutput(a | b);
            a = true;
            writeOutput(a & b);
            writeOutput(a | b);
            b = false;
            writeOutput(a & b);
            writeOutput(a | b);
            ReadLine();



            //13
            WriteLine("Question #13: (byte) casting");
            int  intValue  = 250;
            byte byteValue = (byte)intValue;

            WriteLine(byteValue);
            //ReadLine();

            //12
            WriteLine("Question #12: LINQ stuff");
            //https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/introduction-to-linq-queries

            // The Three Parts of a LINQ Query:
            //  1. Data source.
            int[] numbers = new int[7] {
                0, 1, 2, 3, 4, 5, 6
            };

            // 2. Query creation.
            // numQuery is an IEnumerable<int>
            var numQuery =
                from num in numbers
                where (num % 2) == 0
                select num;

            // 3. Query execution.
            foreach (int num in numQuery)
            {
                Console.Write("{0,1} ", num);
            }


            // https://stackoverflow.com/questions/16012380/merge-2-arrays-using-linq
            //join two arrays
            int[] num1 = new int[] { 1, 55, 89, 43, 67, -3 };
            int[] num2 = new int[] { 11, 35, 79, 23, 7, -10 };

            //var result = from n1 in num1
            //  from n2 in num2
            //select result;

            var res    = num1.Concat(num2).ToArray();
            var result = num1.Union(num2).ToArray();

            //var ress = num1.GroupJoin(num2).ToArray();


            //12
            WriteLine("Question #12: LINQ: OrderBy Group CrossJoin Intersect");

            int[] array1 = { 1, 2, 3, 4 };
            int[] array2 = { 3, 5, 5, 8 };
            WriteLine(array1);
            var resss = array1.Intersect(array2).ToArray();

            //var res2 = array1.OrderBy()  --- no
            //var res3 = array1.Group??? --- incrorrect usage
            //var res4 = array1.CrossJoin


            foreach (var item in resss)
            {
                WriteLine(item.ToString());
            }

            //WriteLine(resss);
            //ReadKey();


            //11 2/2
            WriteLine("Question #11: `ref` parameter");
            StuffDoer.Main11(new string[6]);
            //ReadKey();


            //10 - part 2
            WriteLine("Question #10: Derived Classes & Inheritance");

            //B b = new B();
            //A a = new C();
            //E e = new A();
            //C c = new E();
            A aa = new E();

            //7
            WriteLine("Question #7: Queues");
            //Queue<String>() q = new Queue();

            /*
             * tried applying this: https://www.tutorialspoint.com/csharp/csharp_queue.htm
             * wouldn't compile
             *
             * Queue q = new Queue();
             * q.Enqueue('A');
             * q.Enqueue('M');
             * q.Enqueue('G');
             * q.Enqueue('W');
             *
             * WriteLine("Current queue: ");
             * foreach (char c in q) Console.Write(c + " ");
             *
             * WriteLine();
             * q.Enqueue('V');
             * q.Enqueue('H');
             * WriteLine("Current queue: ");
             * foreach (char c in q) Console.Write(c + " ");
             *
             * WriteLine();
             * WriteLine("Removing some values ");
             * char ch = (char)q.Dequeue();
             * WriteLine("The removed value: {0}", ch);
             * ch = (char) q.Dequeue();
             * WriteLine("The removed value: {0}", ch);
             *
             * //ReadKey();
             */


            //5
            var firstName = "";

            WriteLine("Question #5: Exceptions");
            try
            {
            }
            catch (Exception ex) when(firstName == null)
            {
                WriteLine($"{firstName} cannot be null");
            }
            catch (Exception ex)
            {
                if (firstName == null)
                {
                    WriteLine($"{nameof(firstName)} cannot be null");
                }
            }
//            catch (Exception ex) when (firstName == null)
//            {
//                WriteLine($"{nameof(firstName)} cannot be null");
//            }
//            finally (Exception ex)
//            {
//
//            }

            //ReadKey();



            //1
            WriteLine("Question #1: Overriding");
            //which of the following are required to override Equals() method in C#?
            Obj obj = new Obj();

            WriteLine(obj.Equals(obj));

            WriteLine(obj.Equals(null));

            Obj obj1 = new Obj();
            Obj obj2 = new Obj();

            WriteLine(obj1.Equals(obj2));
            ReadKey();
        }