2015-08-29 4 views
10

Технически какие значения и различие терминов объявляя, инстанцирования, инициализацию и назначения объекта в C#?смыслов объявляя, инстанцирование, инициализации и присвоения объекта

Я думаю, что знаю смысл назначения, но у меня нет формального определения.

В msdn говорится, что «действие создания объекта называется экземпляром». Но смысл , создающий, кажется расплывчатым для меня. Вы можете написать

int a; 

is a Создано?

+0

Я никогда не видел 'уточнения'. но 'instantiation' означает создание экземпляра объекта. 'initializing' означает значение параметра для объекта (не обязательно создает новый экземпляр). 'assigning' является самоописательным. присвойте значение объекту. я, возможно, ошибаюсь. но вот что я думаю –

+0

FYI, int - примитивный тип, а не объект. – OldProgrammer

+0

жаль, что я имел в виду объявление. – user2029077

ответ

18

Объявление - Объявление переменной означает введение в программу новой переменной. Вы определяете его тип и его имя.

int a; //a is declared 

Instantiate - Инстанцирование класса означает создать новый экземпляр класса. Source.

MyObject x = new MyObject(); //we are making a new instance of the class MyObject 

Initialize - Для инициализации переменной означает присвоить ему начальное значение.

int a; //a is declared 
int a = 0; //a is declared AND initialized to 0 
MyObject x = new MyObject(); //x is declared and initialized with an instance of MyObject 

Назначение - Присвоение переменной означает, чтобы обеспечить переменную со значением.

int a = 0; //we are assigning to a; yes, initializing a variable means you assign it a value, so they do overlap! 
a = 1; //we are assigning to a 
+0

Итак, Instantiation не используется для структур или простых типов? – user2029077

+0

Может ли «инициализация» означать «присвоение в первый раз после объявления»? – user2029077

+1

Термин используется для структур, хотя я честно не знаю, почему. Однако «экземпляр» не используется для простых типов. И да, это в основном смысл инициализации. @MinimusHeximus – Zarwan

5

В общем:

Объявить означает, чтобы сообщить компилятору, что что-то существует, так что пространство может быть выделено для него. Это отдельно от определения или инициализации чего-либо в том, что он не обязательно говорит, что такое «ценность» вещи, только то, что она существует. В C/C++ существует сильное различие между объявлением и определением. В C# гораздо меньше различий, хотя термины все еще можно использовать аналогично.

Мгновенное действие буквально означает «создать экземпляр». В программировании это обычно означает создание экземпляра объекта (обычно на «куче»). Это делается с помощью ключевого слова new на большинстве языков. т.е.: new object();. Большую часть времени вы также сохраните ссылку на объект. т.е.: object myObject = new object();.

Инициализация означает, что необходимо указать начальное значение. На некоторых языках, если вы не инициализируете переменную, в ней будут произвольные (грязные/мусорные) данные. В C# на самом деле это ошибка времени компиляции для чтения из неинициализированной переменной.

Назначение является просто хранение одного значения к переменной.x = 5 присваивает значение 5 переменной x. На некоторых языках назначение не может быть объединено с объявлением, но в C# оно может быть: int x = 5;.

Обратите внимание, что в заявлении object myObject = new object(); сочетаются все четыре из них.

  • new object() создает новый объект object, возвращает ссылку на него.
  • object myObject объявляет новый номер object.
  • = инициализирует ссылочную переменную, присваивая ей значение ссылки.
+0

Есть ли у нас термин * define *? Что означает * определение *? – user2029077

+1

@MinimusHeximus Определить средства, которые дают значение (или тело). Мы действительно не используем «определить» много в C#, но это было бы похоже на значение для инициализации. Когда вы пишете метод, я думаю, вы могли бы назвать это определение метода, хотя он не имеет никакого контраста с объявлением метода, подобного ему в C++. –

Смежные вопросы