Luffy1
@Luffy1
Student, Junior .NET programmer, C#, JS, HTML/CSS

Объект типа string и объект собственноручно созданного типа имеют одинаковое строение, учитывая, что они оба ссылочного типа?

class A
{

}
class Program
{
  public static void Main()
  {
    string a = "99";
    A a2 = new A();
  }
}

Я читал книгу Рихтера и Голдштейна, поэтому знаю, как выглядит объект собственноручно созданного типа, при этом я знаю, что этот объект - ссылочного типа, так как класс - ссылочный тип. Но раз string тоже ссылочного типа, то он имеет такое же строение, как объект собственноручно созданного типа? Если да, то объект типа string хранит своё значение в поле или что-то типа этакого? Если нет, то в куче создаётся не объект типа string, а само значение переменной, то есть в куче просто выделяется память, а в эту память запихуется одно значение? Но тогда бы мы не смогли обращаться к методам типа object, так как не было бы таблицы методов, - значит, похожи по строению?

Я имел ввиду, имеет ли объект типа string также, как и объект собственноручно созданного типа, указатель на объект-тип, индекс блока синхронизации, таблицу методов, в которой есть EEClass и указатель на интерфейсы, и т. д. и т. п.
  • Вопрос задан
  • 59 просмотров
Решения вопроса 1
yarosroman
@yarosroman Куратор тега C#
C# the best
Все объекты одинаковы и в памяти имеют одинаковое строение, да имеет все, что есть у object, строка, как и массивы, выделяют память в куче на хранение данных. Вот стоит посмотреть https://youtu.be/KbuJdkPLAjw
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы