Здравствуйте, 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();
}