Size: a a a

🎄.NET Talks: Evergreen🎄

2019 November 26

А

Артёмка ;) in 🎄.NET Talks: Evergreen🎄
Я понял истину. Все, это уже точно.

Если в классе/структуре/чем угодно

содержится экземпляр структуры в качестве

1 вариант) поля
2 вариант) свойства

с именем s2, а также в этой структуре  определено int поле/свойство и метод ChangeVal, который это поле/свойство модифицирует,

то имея такую строку кода:

class_or_struct_or_anything_else.s2.ChangeVal(6);


в случае 1, значение поменяется на 6
в случае 2, значение не поменяется на 6, потому что свойство вернет копию.

То есть если это какой-то переход, какой-нибудь return, или еще что-то, или присваивание переменной, то возвращается копия, а если вы просто обращаетесь к полю, то вы не получаете копию при обращении, а работаете с настоящим полем.
источник

А

Артёмка ;) in 🎄.NET Talks: Evergreen🎄
так что в случае свойства вы можете поменять значение экземпляра структуры только присвоив свойству новый экземпляр. Поменять значение внутри этого свойства вы не сможете
источник

NK

Nesterenko Konstantin in 🎄.NET Talks: Evergreen🎄
да вроде бы и логично, ведь get это синтаксис для метода который возвращает value у поля
источник

А

Артёмка ;) in 🎄.NET Talks: Evergreen🎄
Да, логично, но как-то оно нигде явно не указывается в доках, и поэтому думаешь что всегда там что-то копируется, а в каких случаях не понятно
источник

А

Артёмка ;) in 🎄.NET Talks: Evergreen🎄
ладно, я пошел просить +500 за то что поумнел
источник

V🧀

Vestrond 🧀 in 🎄.NET Talks: Evergreen🎄
528
источник

V🧀

Vestrond 🧀 in 🎄.NET Talks: Evergreen🎄
Потому что тыж математик
источник

NK

Nesterenko Konstantin in 🎄.NET Talks: Evergreen🎄
Артёмка ;)
ладно, я пошел просить +500 за то что поумнел
намально, это так работает?
источник

NK

Nesterenko Konstantin in 🎄.NET Talks: Evergreen🎄
пойду +5к просить ибо осознал это
источник

А

Артёмка ;) in 🎄.NET Talks: Evergreen🎄
че? мб тогда 512
источник

Dv

Dr. Friedrich von Never in 🎄.NET Talks: Evergreen🎄
Артёмка ;)
Я понял истину. Все, это уже точно.

Если в классе/структуре/чем угодно

содержится экземпляр структуры в качестве

1 вариант) поля
2 вариант) свойства

с именем s2, а также в этой структуре  определено int поле/свойство и метод ChangeVal, который это поле/свойство модифицирует,

то имея такую строку кода:

class_or_struct_or_anything_else.s2.ChangeVal(6);


в случае 1, значение поменяется на 6
в случае 2, значение не поменяется на 6, потому что свойство вернет копию.

То есть если это какой-то переход, какой-нибудь return, или еще что-то, или присваивание переменной, то возвращается копия, а если вы просто обращаетесь к полю, то вы не получаете копию при обращении, а работаете с настоящим полем.
всё ещё не учитываешь ридонли
источник

Dv

Dr. Friedrich von Never in 🎄.NET Talks: Evergreen🎄
А там интересно
источник

NK

Nesterenko Konstantin in 🎄.NET Talks: Evergreen🎄
П-понимание
источник

А

Артёмка ;) in 🎄.NET Talks: Evergreen🎄
а че там ридонли? если я не ошибаюсь, это всего лишь констрейнт что все поля должны быть ридонли в структуре
источник

NK

Nesterenko Konstantin in 🎄.NET Talks: Evergreen🎄
там какие-то хитрые оптимизации могут быть на чтении
источник

Dv

Dr. Friedrich von Never in 🎄.NET Talks: Evergreen🎄
Артёмка ;)
а че там ридонли? если я не ошибаюсь, это всего лишь констрейнт что все поля должны быть ридонли в структуре
для ридонли полей уже всё работает иначе
источник

Dv

Dr. Friedrich von Never in 🎄.NET Talks: Evergreen🎄
Даже пока не говорим про ридонли реф стракты
источник

Dv

Dr. Friedrich von Never in 🎄.NET Talks: Evergreen🎄
Но с ними-то самое мяско, да
источник

Dv

Dr. Friedrich von Never in 🎄.NET Talks: Evergreen🎄
А ещё же теперь есть ридонли методы
источник

Dv

Dr. Friedrich von Never in 🎄.NET Talks: Evergreen🎄
ухххх
источник