public static void Main()
Console.WriteLine("privet" == "privet");
Console.WriteLine("privet".Equals("privet"));
Console.WriteLine(ReferenceEquals("privet", "privet"));
var anotherPriver = "pri"+"vet";
Console.WriteLine("privet" == anotherPriver);
Console.WriteLine(ReferenceEquals("privet", anotherPriver));
var concataneted = prefix + suffix;
Console.WriteLine(ReferenceEquals((object)"privet", (object)concataneted));
Console.WriteLine("privet" == concataneted);
Console.WriteLine("privet".Equals(concataneted));
var interned = string.Intern(prefix + suffix);
Console.WriteLine(ReferenceEquals("privet", interned));
Console.WriteLine("Tokens:");
var firstToken = new Token { Value = 5 };
var secondToken = new Token { Value = 5 };
Console.WriteLine(ReferenceEquals(firstToken, secondToken));
Console.WriteLine(firstToken == secondToken);
Console.WriteLine(firstToken.Equals(secondToken));
public int Value {get;set;}