|
Проясните по ref и и value типам.
|
|||
---|---|---|---|
#18+
Привет. Есть некоторые вопросы по полному пониманию Ссылочный и ВалЮтных типов. Объясните пожалуйста подробно. Нужно полное понимание в каком случае где располагается элемент - когда в куче, а когда в стеке. В частности интересуют сложные случаи: структура созданная в подфункции, которая добавляется в класс, который добавляется в list, после чего функция завершает свою работу. Где, в этом случае, хранится структура ? Стек для каждой функции свой - она будет перемещена в стеку вызвавшей функции, а затем будет скопирована еще выше - так и будет гулять по стекам функций ? Или тут будет боксинг ? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Разъясните пожалуйста правила, что и когда где лежит. Чтобы я сам мог разобрать любой подобный сложный случай, в том числе со сложными вложенностями когда классы хранят структуры, которые хранят структуры, которые с классами и т.д. Дайте мне удочку, и я сам смогу ловить рыбу :) Может быть знаете глубокую статью, разбирающую все подобные вопросы на подобных примерах ? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 14:15 |
|
Проясните по ref и и value типам.
|
|||
---|---|---|---|
#18+
Строго говоря, однозначный ответ дать нельзя. В общем случае, значения Value типов могут располагаться на стеке. Хорошая статья на MSDN: Правда о значимых типах ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 14:25 |
|
Проясните по ref и и value типам.
|
|||
---|---|---|---|
#18+
Главное отличие value типов от ссылочных это передача по значению, а не то где они хранятся. Grunch уже дал ссылку с объяснением. В данном случае переменная strct будет хранится в стеке. Затеме в строк classsssss.stract = strct; её значение будет скопировано в область памяти внутри управляемой кучи. Память под хранение этого значения выделятся при вызове new() строкой выше т.к. размер выделенной памяти складывается из суммы размеров всех экземплярных полей. РостигайИли тут будет боксинг ?Если тип поля/свойства stract это MyStruct, то упаковки не будет. РостигайСтек для каждой функции свойТы ошибаешься. Свой стек создается для каждого потока в приложении. РостигайМожет быть знаете глубокую статьюСсылку на статью тебе уже дали. Советуб также книгу "CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C#" Джеффри Рихтера. РостигайВалЮтныхНе надо придумывать бестолковые переводы. Не знаешь перевод - мспользуй английский термин - valie type. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 14:52 |
|
Проясните по ref и и value типам.
|
|||
---|---|---|---|
#18+
bazileРостигайВалЮтныхНе надо придумывать бестолковые переводы. Не знаешь перевод - мспользуй английский термин - valie type. вот-вот. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 15:31 |
|
Проясните по ref и и value типам.
|
|||
---|---|---|---|
#18+
bazile, Спасибо. Вполне понятно стало. хей. да я же пошутил насчет валютных то, неужели не понятно. Ведь там СПЕЦИАЛЬНО большая буковка, показывающая, что я ЗНАЮ что пишу :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 15:34 |
|
Проясните по ref и и value типам.
|
|||
---|---|---|---|
#18+
ну и еще к вопросу о том, что где хранится: http://yoda.arachsys.com/csharp/memory.html ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 17:28 |
|
|
start [/forum/topic.php?fid=20&msg=38745289&tid=1402482]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 325ms |
total: | 477ms |
0 / 0 |