using Structs;

// W razie stosowania domyślnych ustawień SDK reguły analizy kodu wykrywają
// problem ilustrowany przez ten przykład i generują ostrzeżenia CA2013.
// W tym przykładzie ten błąd został popełniony celowo, dlatego 
// ostrzeżenie zostało wyłączone.
// (Uwaga: VS czasami błędnie oznacza to jako niepotrzebną ukrywanie ostrzeżeń.)
#pragma warning disable CA2013

var p1 = new Point(40, 2);
Point p2 = p1;
var p3 = new Point(40, 2);

Console.WriteLine($"{p1.X}, {p1.Y}");
Console.WriteLine($"{p2.X}, {p2.Y}");
Console.WriteLine($"{p3.X}, {p3.Y}");
Console.WriteLine(p1 == p2);
Console.WriteLine(p1 == p3);
Console.WriteLine(p2 == p3);
Console.WriteLine(object.ReferenceEquals(p1, p2));
Console.WriteLine(object.ReferenceEquals(p1, p3));
Console.WriteLine(object.ReferenceEquals(p2, p3));
Console.WriteLine(object.ReferenceEquals(p1, p1));
