//Anonymous type with integer property
var foo = new {Number = 1};
//Compile time error if you try to assign a the integer property to a string
string s = foo.Number;
An object is just a fancy map, after all...
These are also immutable by default, which probably makes them even more relevant to this DOA discussion.