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;
Yes, structs inherit from ValueType, and are passed by value. This is true for primitive types as well - int, double, bool, etc (but not string). Strings, arrays and all classes are reference types, and are passed by reference.
If you want to pass a struct by ref, using the ref keyword:
public void MyMethod (ref Vector2 position)
which will pass the struct by-ref, and allow you to modify its members.