А
Если в классе/структуре/чем угодно
содержится экземпляр структуры в качестве
1 вариант) поля
2 вариант) свойства
с именем s2, а также в этой структуре определено int поле/свойство и метод ChangeVal, который это поле/свойство модифицирует,
то имея такую строку кода:
class_or_struct_or_anything_else.s2.ChangeVal(6);
в случае 1, значение поменяется на 6
в случае 2, значение не поменяется на 6, потому что свойство вернет копию.
То есть если это какой-то переход, какой-нибудь return, или еще что-то, или присваивание переменной, то возвращается копия, а если вы просто обращаетесь к полю, то вы не получаете копию при обращении, а работаете с настоящим полем.

