2014-01-26 7 views
0

привет каждые один у меня есть несколько вопросовто, что происходит, когда типы значений определяются внутри ссылочных типов

1)

class ClassName 
{ 
    public int[] a = new int[100]; 
} 

, что происходит, когда объект этого класса создается я имею в виду, где это массив целых чисел сохраненный в, на стеке [тип значения] или на куче [ссылочный тип]

Я запутался, так как типы значений спецификаций хранятся в стеке, тогда массив будет храниться в стеке.

но Ссылочные типы создаются на Heap согласно спецификации

пожалуйста, ребята помогают мне понять это. я не хочу писать код, не зная, что происходит за кулисами

Заранее спасибо

+0

Возможный дубликат [Поля класса, хранятся ли они в стеке или куче?] (Http://stackoverflow.com/questions/2565331/fields-of-class-are-they-stored-in-the- stack-or-heap) – Markus

+0

Типы значений не выделяются в стеке, они выделяются inline. Массивы являются ссылочным типом, поэтому данные массива хранятся в куче, а ссылка на него хранится в экземпляре 'ClassName'. – Lee

+0

Дублированный вопрос, но вот действительно хороший ответ: http://stackoverflow.com/a/2561622/67038 – JMarsch

ответ

4

Там нет типов значений здесь. Поэтому вопрос спорный. И ClassName, и int [] являются ссылочными типами.

Если тип значения объявлен как автоматический локальный, он хранится в стеке. Если он объявлен внутри другого типа, он хранится внутри этого другого типа.

Это один из великих не умирающих мифов C#, которые типы значений всегда хранятся в стеке.

 Смежные вопросы

  • Нет связанных вопросов^_^