(Пример из Unity3d) Проблема с понимаем типов в C#, как оно работает?
При старте скрипта юнити положит в ваш moveObject то, что вы перетащили туда в инспекторе. Скрытно и незаметно.
Если очень грубо, moveObject это указатель. Где-то там, в глубине, это IntPtr, обычно являющийся 64 или 32 битным числом. И изначально это число будет равно null (т.е. все нули или какое-нибудь другое условное обозначение "ничего").
Перед тем как "отдать" этот объект вам (т.е. начать вызывать Start, Update и прочие методы), Unity, как было указано выше, "скрытно и незаметно" присвоит этому полю значение, указывающее на объект, который вы поставили в инспекторе.