Re[8]: Анонимные типы
От: SHEMA  
Дата: 09.03.17 08:37
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Ага. Что называется: собери все варианты:

S>
S>        static void Main(string[] args)
S>        {
S>            var a = new { A = "A", B = "B" };
S>            var a2 = new { A = "A", B = "B" };
S>            var b = (A: "A", B: "B");
S>            var b2 = (A: "A", B: "B");
S>            var c = Tuple.Create("A", "B");
S>            var c2 = Tuple.Create("A", "B");

S>            Console.WriteLine(a==a2); // ok
S>            Console.WriteLine(b==b2); // CS0019 Operator '==' cannot be applied ...
S>            Console.WriteLine(c==c2); // Resharper's: Possible unintended reference comparison; to get a value comparison, use 'Equals' method
    
S>            Console.WriteLine("Done.");
S>            Console.ReadLine();
S>        }
S>


S>но это ненадолго. В c# 7.x операторы для ValueTuple вернут.


Visual Studio 2017, .Net framework 4.6.2:
        static void Main(string[] args)
        {
            var a = new { A = "A", B = "B" };
            var a2 = new { A = "A", B = "B" };
            //var b = (A: "A", B: "B"); - Error CS8179  Predefined type 'System.ValueTuple`2' is not defined or imported
            //var b2 = (A: "A", B: "B"); - Error CS8179  Predefined type 'System.ValueTuple`2' is not defined or imported

            var c = Tuple.Create("A", "B");
            var c2 = Tuple.Create("A", "B");

            Console.WriteLine(a == a2); // False
            //Console.WriteLine(b == b2);
            Console.WriteLine(c == c2); // False

            Console.WriteLine("Done.");
            Console.ReadLine();
        }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.