Ejemplo n.º 1
0
        private static void StructVsClass()
        {
            // Работа с типами значений
            Console.WriteLine("VALUE TYPE DEMO:");
            var s1a = new StructExample()
            {
                A = 1
            };                                       // На стеке!
            var s1b = new StructExample()
            {
                A = 1
            };                                       // На стеке!
            var s2 = new StructExample()
            {
                A = 2
            };                                      // На стеке!

            Console.WriteLine(s1a.Equals(s1b));
            Console.WriteLine(s1a.Equals(s2));

            TryChangeStruct(s2);
            Console.WriteLine(s2.A);
            Console.WriteLine();

            // Работа с ссылочными типами
            Console.WriteLine("REFERENCE TYPE DEMO:");
            var c1a = new ClassExample()
            {
                A = 1
            };                                      // В куче!
            var c1b = new ClassExample()
            {
                A = 1
            };                                      // В куче!
            var c2 = new ClassExample()
            {
                A = 2
            };                                      // В куче!

            Console.WriteLine(c1a.Equals(c1b));
            Console.WriteLine(c1a.Equals(c2));
            Console.WriteLine(c1a == c1b);
            Console.WriteLine(c1a == c2);

            TryChangeClass(c2);
            Console.WriteLine(c2.A);
            Console.WriteLine();
        }
Ejemplo n.º 2
0
 private static void TryChangeStruct(StructExample s)
 {
     s.A = 5;
 }