Suppose you don't have that structure .. you can use anonymous type:
var Bill=new {
ID=1,
name="Bill",
isAlive=false
};
var Gates=new {
ID=2,
name="Gates",
isAlive=true
};
Note the remarks:
If two or more anonymous object initializers in an assembly specify a sequence of properties that are in the same order and that have the same names and types, the compiler treats the objects as instances of the same type. They share the same compiler-generated type information.
Structures are immutable, but an instances of anonymous type is read-only once it's assigned:
Anonymous types provide a convenient way to encapsulate a set of read-only properties into a single object without having to explicitly define a type first. The type name is generated by the compiler and is not available at the source code level. The type of each property is inferred by the compiler.
So you gained both of the benefits with anonymous types.