public string Property {get; set;}
public int AnotherProperty {get; set;}
public string OneMore {get; set;}
hasChanged |= Property != (Property = "Value");
hasChanged |= AnotherProperty != (AnotherProperty = 42);
hasChanged |= OneMore != (OneMore = "They get it");
return Property != (Property = "Value") ||
AnotherProperty != (AnotherProperty = 42) ||
OneMore != (OneMore = "They get it");
public override string ToString()
return String.Format("Property: '{0}' AnotherProperty: {1} OneMore: '{2}'",Property,AnotherProperty,OneMore);
public static void Main()
Console.WriteLine(String.Format("Clever: {0} '{1}'",thing.Clever(),thing));
thing = new Thing() { Property = "Value"};
Console.WriteLine(String.Format("Clever: {0} '{1}'",thing.Clever(),thing));
Console.WriteLine(String.Format("Verbose: {0} '{1}'",thing.Verbose(),thing));
thing = new Thing() { Property = "Value"};
Console.WriteLine(String.Format("Verbose: {0} '{1}'",thing.Verbose(),thing));