As it says on MSDN documentation and elsewhere, a struct has no identity and should therefore represent an “eternal” value that never changes, eg a phone number (the phone number doesn’t change, but you get a new one).
How can this influence my coding decisions?
Based on that knowledge, am I right in thinking that no identity means that if two structs have the same data, there is no way to tell them apart, so conceptually, they are the same thing. So two structs used in a codebase for a number for example (7) are always the same thing. So with classes, two objects with the same data (e.g. a person object with just name) can be different people, yet with structs, this distinction does not exist. So a struct that may represent a skill (e.g. fishing) will always be the same (there is no identity to distinguish it).
Hope that makes sense.
Thanks
A struct is a value. A class is an object. It is very similar to real life, where 42 will always equal 42, but you can have two people by the name of John Smith.
What you said in the question is a very good outline of the concepts of value types vs. reference types.
As for how it should influence your coding, always code so that a value will equal an identical value, e.g. 42 must always equal 42. There are some cases where a reference type should be compared by value instead of identity (e.g. string). But in the majority of cases, reference types compare by identity.
If you can measure or calculate it, it belongs in a value type. Otherwise, use a reference type.