Сообщение Re[7]: Анонимные типы от 07.03.2017 8:06
Изменено 07.03.2017 8:11 Sinix
Re[7]: Анонимные типы
Здравствуйте, busk, Вы писали:
S>>Поскольку анонимные типы — это чисто compile-time-фича, то ответственность за корректную реализацию на себя берёт компилятор, а не платформа, вот и вся разница.
B>не знал. Кстати интересные вещи открылись, что == и Equals дают разные значения для анонимного типа и тюпла в связи с этим
Ага. Что называется: собери все варианты:
но это ненадолго. В c# 7.x операторы для ValueTuple вернут.
S>>Поскольку анонимные типы — это чисто compile-time-фича, то ответственность за корректную реализацию на себя берёт компилятор, а не платформа, вот и вся разница.
B>не знал. Кстати интересные вещи открылись, что == и Equals дают разные значения для анонимного типа и тюпла в связи с этим
Ага. Что называется: собери все варианты:
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");
var b2 = (A: "A", B: "B");
var c = Tuple.Create("A", "B");
var c2 = Tuple.Create("A", "B");
Console.WriteLine(a==a2); // ok
Console.WriteLine(b==b2); // CS0019 Operator '==' cannot be applied ...
Console.WriteLine(c==c2); // Resharper's: Possible unintended reference comparison; to get a value comparison, use 'Equals' method
Console.WriteLine("Done.");
Console.ReadLine();
}
но это ненадолго. В c# 7.x операторы для ValueTuple вернут.
Re[7]: Анонимные типы
Здравствуйте, busk, Вы писали:
S>>Поскольку анонимные типы — это чисто compile-time-фича, то ответственность за корректную реализацию на себя берёт компилятор, а не платформа, вот и вся разница.
B>не знал. Кстати интересные вещи открылись, что == и Equals дают разные значения для анонимного типа и тюпла в связи с этим
Ага. Что называется: собери все варианты:
но это ненадолго. В c# 7.x операторы для ValueTuple вернут.
S>>Поскольку анонимные типы — это чисто compile-time-фича, то ответственность за корректную реализацию на себя берёт компилятор, а не платформа, вот и вся разница.
B>не знал. Кстати интересные вещи открылись, что == и Equals дают разные значения для анонимного типа и тюпла в связи с этим
Ага. Что называется: собери все варианты:
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");
var b2 = (A: "A", B: "B");
var c = Tuple.Create("A", "B");
var c2 = Tuple.Create("A", "B");
Console.WriteLine(a==a2); // ok
Console.WriteLine(b==b2); // CS0019 Operator '==' cannot be applied ...
Console.WriteLine(c==c2); // Resharper's: Possible unintended reference comparison; to get a value comparison, use 'Equals' method
Console.WriteLine("Done.");
Console.ReadLine();
}
но это ненадолго. В c# 7.x операторы для ValueTuple вернут.