Объект типа string и объект собственноручно созданного типа имеют одинаковое строение, учитывая, что они оба ссылочного типа?
class A
{
}
class Program
{
public static void Main()
{
string a = "99";
A a2 = new A();
}
}
Я читал книгу Рихтера и Голдштейна, поэтому знаю, как выглядит объект собственноручно созданного типа, при этом я знаю, что этот объект - ссылочного типа, так как класс - ссылочный тип. Но раз string тоже ссылочного типа, то он имеет такое же строение, как объект собственноручно созданного типа? Если да, то объект типа string хранит своё значение в поле или что-то типа этакого? Если нет, то в куче создаётся не объект типа string, а само значение переменной, то есть в куче просто выделяется память, а в эту память запихуется одно значение? Но тогда бы мы не смогли обращаться к методам типа object, так как не было бы таблицы методов, - значит, похожи по строению?
Я имел ввиду, имеет ли объект типа string также, как и объект собственноручно созданного типа, указатель на объект-тип, индекс блока синхронизации, таблицу методов, в которой есть EEClass и указатель на интерфейсы, и т. д. и т. п.
Ответы (1 шт):
Встроенные типы С# string, long , int имеют свои псевдонимы в .NetFramework, легко запутаться потому что C# это не только .net. Почитайте тут Так как все типы это потомки Object то и разницы я не вижу