Arhn - архитектура программирования

Struct в куче?

Итак, у меня есть это:

class SimpleDateStructureDemo
{

  struct Date
  {
    public int year;
    public int month;
    public int day;
  }

  static void Main()
  {
    ...
  }

}

Затем я вижу пример, в котором говорится, что объект размещен в куче:

Date dateMoonWalk = new Date();

Я думал, что классы относятся к типу ref, а структуры - к типу значений. В конце концов, вы МОЖЕТЕ создать объект типа структуры в куче, просто используя new, верно?


  • Вы когда-нибудь задумывались о том, чтобы сделать отступ в коде? Кроме того, когда вы ссылаетесь на то, что видели или читали, обычно имеет смысл процитировать / поставить ссылку на это, чтобы это можно было оценить вместе с вашим вопросом. 24.06.2014
  • Когда вы говорите «куча», что вы имеете в виду? (Я знаю, что это означает, я хочу знать, что вы думаете об этом) И почему вас волнует, размещен ли ваш объект в куче, в состоянии или повторно загружен в ЦП. 24.06.2014
  • Обязательное к прочтению: блоги .msdn.com / b / ericlippert / archive / 30.09.2010 / 24.06.2014
  • stackoverflow.com/questions/4853213/, stackoverflow.com/questions/203695/, stackoverflow.com/questions/5563774/ 24.06.2014
  • Тот факт, что ответ Джона Скита на этот вопрос (6 лет назад) составляет примерно 3 страницы, должен подсказать вам, что это намного сложнее, чем вы думаете, и почти наверняка не имеет отношения к обычному разработчику. 24.06.2014
  • Вы действительно можете object dateMoonWalk = new Date();, что, вероятно, является наиболее близким способом создания объекта типа структуры в куче, просто используя new, но я думаю, что это уже подробно описано в дублированном вопросе, похожем на FAQ. 24.06.2014

Ответы:


1

вы МОЖЕТЕ создать объект типа структуры в куче, просто используя new, верно?

Нет, если вы сделаете это внутри Main, как правило, он не будет размещен в куче. Однако вы можете выделить структуру в куче разными способами, в том числе использовать ее в качестве поля в классе, использовать ее в закрытии и т. Д.

Синтаксис new Date просто инициализирует структуру значением по умолчанию (обнуленным), но на самом деле не меняет способ и место размещения.

23.06.2014
  • Я не знаю, можно ли выделить структуру в куче - это точное описание. Возможно, структура выделяется в стеке (или в регистре), а затем помещается в кучу. 30.05.2021

  • 2

    new в данном случае не имеет ничего общего с размещением в куче

    Оператор new также используется для вызова конструктора по умолчанию для типов значений.

    http://msdn.microsoft.com/en-us/library/fa0ab757.aspx

    23.06.2014
  • new в любом случае не имеет ничего общего с размещением в куче. 24.06.2014
  • @PrestonGuillot Итак, где, по вашему мнению, создаются экземпляры ссылочного типа? Кстати, я имею в виду управляемую кучу. 24.06.2014
  • Я пришел из фона С ++, где новое в основном связано с кучей ... вот почему я думал, что он работает так же 24.06.2014
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..