Какие данные могут находится в переменных типа класса?
В коде есть комментарии, которые нужно прочитать. 

Переменная типа MyClass, когда под неё выделят память будет содержать ссылку на MyClass со значением по умолчанию null.

Данные в полях класса могут быть: 

экземпляры классов -- class; ссылочный тип данных (Reference Type)
экземпляры структур -- struct, enum; тип значений (Value Type)


Размеры типов значений
Ссылочные типы
Типы значений

using System;

namespace Types
{
    public class Person
    {
        public string FirstName { get; set; }

        public int Age { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // Так как class это ссылочный тип данных (Reference Type), то
            // в стеке создаётся ссылка на экземпляр класса Person,
            // под который выделена память в области, называемой кучей (Heap).
            var person = new Person
            {
                FirstName = "John",
                Age = 30
            };
            // Передаём в метод ссылку. Ссылка копируется, а данные
            // так и остаются в куче, с ними ничего не происходит.
            // Данных может быть хоть мегабайт, они не копируются, а вот
            // ссылка копируется и имеет разный размер в зависимости от 
            // архитектуры x86 или x64, но размер этот крайне маленький (4 байта или 8 байт)
            Display(person);
            
            Console.ReadKey();
        }
        
        private static void Display(Person person)
        {
            // Здесь внутри метода находится копия ссылки.
            Console.WriteLine($"Name = {person.FirstName}, Age = {person.Age.ToString()}");
        }
    }
}

-
            // Ссылка, так как это class
            Person person; 

            // Ссылка на экземпляр класса, так как мы выделили память в куче.
            person = new Person();

using System;

namespace Types
{
    class MyClass
    {
        MyClass my;
    }

    class Program
    {
        static void Main(string[] args)
        {
            // Выделяем память в куче.
            // Ссылается на экземпляр класса MyClass, внутри
            // которого есть поле типа MyClass со значением null.
            MyClass data = new MyClass();

            Console.ReadKey();
        }
    }
}
Не парьтесь все что не натив то Object, но и натив можно упаковать в обджект