powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Проясните по ref и и value типам.
6 сообщений из 6, страница 1 из 1
Проясните по ref и и value типам.
    #38745134
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.

Есть некоторые вопросы по полному пониманию Ссылочный и ВалЮтных типов. Объясните пожалуйста подробно. Нужно полное понимание в каком случае где располагается элемент - когда в куче, а когда в стеке.

В частности интересуют сложные случаи: структура созданная в подфункции, которая добавляется в класс, который добавляется в list, после чего функция завершает свою работу. Где, в этом случае, хранится структура ? Стек для каждой функции свой - она будет перемещена в стеку вызвавшей функции, а затем будет скопирована еще выше - так и будет гулять по стекам функций ? Или тут будет боксинг ?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
void Method (List<MyClass> list)
{
  MyStruct strct = new MyStruct () {i  =3};
  MyClass classsssss = new MyClass ();
  classsssss.stract = strct;

  list.add (classsssss);

  // где будет лежать структура после завершения функции ? будет ли боксинг, когда он произойдет ?
}



Разъясните пожалуйста правила, что и когда где лежит. Чтобы я сам мог разобрать любой подобный сложный случай, в том числе со сложными вложенностями когда классы хранят структуры, которые хранят структуры, которые с классами и т.д.
Дайте мне удочку, и я сам смогу ловить рыбу :)

Может быть знаете глубокую статью, разбирающую все подобные вопросы на подобных примерах ?
...
Рейтинг: 0 / 0
Проясните по ref и и value типам.
    #38745146
Grunch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Строго говоря, однозначный ответ дать нельзя. В общем случае, значения Value типов могут располагаться на стеке. Хорошая статья на MSDN: Правда о значимых типах
...
Рейтинг: 0 / 0
Проясните по ref и и value типам.
    #38745203
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Главное отличие value типов от ссылочных это передача по значению, а не то где они хранятся. Grunch уже дал ссылку с объяснением.

В данном случае переменная strct будет хранится в стеке. Затеме в строк classsssss.stract = strct; её значение будет скопировано в область памяти внутри управляемой кучи. Память под хранение этого значения выделятся при вызове new() строкой выше т.к. размер выделенной памяти складывается из суммы размеров всех экземплярных полей.

РостигайИли тут будет боксинг ?Если тип поля/свойства stract это MyStruct, то упаковки не будет.

РостигайСтек для каждой функции свойТы ошибаешься. Свой стек создается для каждого потока в приложении.

РостигайМожет быть знаете глубокую статьюСсылку на статью тебе уже дали. Советуб также книгу "CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C#" Джеффри Рихтера.

РостигайВалЮтныхНе надо придумывать бестолковые переводы. Не знаешь перевод - мспользуй английский термин - valie type.
...
Рейтинг: 0 / 0
Проясните по ref и и value типам.
    #38745281
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazileРостигайВалЮтныхНе надо придумывать бестолковые переводы. Не знаешь перевод - мспользуй английский термин - valie type.

вот-вот.
...
Рейтинг: 0 / 0
Проясните по ref и и value типам.
    #38745289
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bazile,

Спасибо. Вполне понятно стало.

хей. да я же пошутил насчет валютных то, неужели не понятно. Ведь там СПЕЦИАЛЬНО большая буковка, показывающая, что я ЗНАЮ что пишу :)
...
Рейтинг: 0 / 0
Проясните по ref и и value типам.
    #38745442
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и еще к вопросу о том, что где хранится: http://yoda.arachsys.com/csharp/memory.html
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Проясните по ref и и value типам.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]