I\'ve recently tried to create a property for a Vector2 field, just to realize that it doesn\'t work as intended.
public Vector2 Position { get;
.NET data types are divided into value and reference types. Value types include int, byte, and structs. Reference types include string and classes.
structs are appropriate instead of classes when they just contain one or two value types (although even there you can have unintended side effects).
So structs are indeed passed by value and what you are seeing is expected.