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

class A
{

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

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

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


Ответы (1 шт):

Автор решения: Aziz Umarov

Встроенные типы С# string, long , int имеют свои псевдонимы в .NetFramework, легко запутаться потому что C# это не только .net. Почитайте тут Так как все типы это потомки Object то и разницы я не вижу

→ Ссылка