Что из себя представляют объекты примитивных значимых, ссылочных типов?
=========================================================================

 Я щас изучаю рефлексию и то, что творится под капотом. Очередь дошла до полей. Я сначала рассматривал их, как отдельную от обычных объектов(значимого или ссылочного) сущность, но ошибся, так как в книге Джеффри Рихтера говорится, что 
> Поле (field)— это член данных, который хранит экземпляр значимого типа или ссылку на ссылочный тип.

, то есть это та же самая переменная, только имеет другое месторасположение, поэтому теперь я буду рассматривать поля, как простые объекты ссылочного или значимого типа, а не как что-то иноземное. И тут появляется вопрос, что из себя представляют объекты **примитивных** значимых, ссылочных типов? Как выглядит объект собственноручно сделанного класса я знаю, про таблицу методов и EEClass знаю, но мне кажется, что объекты примитивных ссылочных типов отличаются от объектов собственноручно сделанных типов, а про внутренности объектов примитивных(да даже не примитивных) значимых типов я вообще ничего не слыхал, пока что. Так вот несколько конкретных вопросов:  

1. Какие **недоступные** для программиста поля, методы, свойства имеют объекты **примитивных** ссылочных и значимых типов?  

2. Имеют ли объекты **примитивных** ссылочных и значимых типов свои дескрипторы?  

3. Если на вопрос №2 ответ - да, то какие **недоступные** для программиста поля, методы, свойства они имеют?  

В книге Рихтера и Голдштейна я об этом ничего не нашёл, нашёл там только о подробном описании собственноручно созданного типа. 

 Модификаторы доступа, позволяют скрывать члены от остального кода, рефлексия позволяет и к ним доступ получить, вот не помню, можно ли приватные методы вызвать. Второе, что есть в объекте, внутренняя структура EEClass. В unsafe режиме, можно и её вытащить, получить таблицу виртуальных методов. 

 Разница между 
```
public class A
{
public int _age = 19;
}
```
  

и 
```
public static void Main()
   {
    int age = 19;
   }
```
 заключается в том, что 1 переменная находится на уровне класса, а вторая на уровне метода . К примеру вы не можете обращаться к переменной на уровне метода из класса или другого метода, а с переменной на уровне класса вы можете обращаться как на уровне класса, так и на уровне метода. 

 Все свойства ValueType открыты, у базовых типов вроде int, свойств вообще нет, они прибиты к ValueType для красоты. Они хранилище для чисел, просто набор битов, примитивнее просто некуда, с ними работают машинные инструкции, а не методы. В случае локальных переменных они вполне могут существовать лишь в регистрах процессора или вообще стереться за ненадобностью. Это и есть разница между age и \_age, другой разницы нет. Что касается методов, то как код фреймворка должен вызывать скрытые методы? Не существует такой вещи.  

Какого рода дескрипторы? Гуглёжь находит дескрипторы файлов и окон...  

P.S. Сложные книги предполагают, что Вы имеет базовое понимание работы компьютера и понимаете Си.