11 ответов:
значение Vis-a-vis ссылочные типы
переменные в C# в 1 из 2 групп. стоимостью типы или ссылка типы. Такие типы, как
intиDateTimeare стоимостью типы. Напротив, любой класс, который вы создаете, является ссылка тип. Строки C# также являются ссылка тип. Большинство вещей в .NET framework являются ссылка типы.части a Переменная
есть переменная имя и стоимостью. из двух частей.
переменной имя это то, что вы объявить он должен быть. Элемент стоимостью это то, что вы присвоить к нему.
переменные инициализируются
все переменные всегда нач значение в точке переменная - это объявил. Таким образом, все переменные инициализации.
на стоимостью типы, как
intкомпилятор даст им допустимое значение, если вы не сделаете это явно.int' s инициализации к нулю по умолчаниюDateTime' s инициализации доDateTime.MinValueпо умолчанию.ссылка тип переменных инициализации к объекту вы даете его. Компилятор не будет присвоить объект (т. е. допустимое значение), если вы не. В этом случае значение
null- ничего. Поэтому мы говорим, что ссылка инициализации к нулю.объекты инициализируются
люди. Объекты создаются экземпляры. Ребенок-это экземпляр человека, объект - экземпляр какого-то класса.акт создания экземпляр класса называется экземпляров (Та-Да!)
так объявить,инициализации и instantiate как это
MyClass myClassyReference= new MyClass();в приведенном выше, это неправильно сказать"... создание экземпляра объект..."
Невыносимая легкость Быть
A ссылка типа имя и значение переменной существует независимо. И я имею в виду независимость.
An инстанцировать объект может иметь или не иметь ссылку на него.
An инстанцировать
A переменная инициализируется значением. Ан объект создается экземпляр, когда для него выделена память и запущен конструктор.
например, вот переменная:
Dim obj as Objectэта переменная не была инициализации. Как только я присвою значение
objпеременная, переменная будет инициализирована. Вот примеры инициализации:obj = 1 obj = "foo"инстанцирование-это совсем другое вещь, но связана с тем, что создание экземпляра обычно сопровождается инициализацией:
Dim obj As New Object()в предыдущей строке кода
objпеременная инициализации со ссылкой на новыйObjectэто было инстанцировать. Мы говорим, что новыйObjectбыл создан экземпляр, потому что мы создали новый экземпляр этого.теперь я верю, что VB.NET делает это намного более запутанным, чем C#, потому что неясно, что назначение имеет место в коде выше. В C# гораздо яснее, что существует как экземпляр экземпляра, так и инициализация переменной:
Object obj = new Object();
до инициализации что-то, чтобы установить его в исходное значение. К instantiate что-то должно создать его экземпляр.
часто это более или менее то же самое. Это:
SqlConnection conn = new SqlConnection();создает a и инициализирует the
connпеременная, установив его в этот экземпляр.так как конструктор объекта также устанавливает свойства объекта в их значения по умолчанию, часто правильно говорить, что создание экземпляра объекта инициализирует его. (Вводит в заблуждение, если объект предоставляет метод, который вы должны явно вызвать, чтобы инициализировать его после его создания, как это иногда бывает.)
*создание экземпляра означает создание экземпляра для класса или объекта.Инициализация означает * инициировать один и тот же объект или класс для любой цели.**
Instantiated означает, что экземпляр объекта был создан. Инициатором означает, что тот же самый объект, сделал инициализацию.
когда вы создаете экземпляр класса или объекта, вы создаете его новый экземпляр или выделяете память для "удержания". Инициализация этого объекта - это инструкции, которые выполняются во время создания экземпляра.
инстанцирование-это когда вы создаете экземпляр класса. Этот экземпляр является объектом, и вы можете установить его свойства или вызвать методы на нем (сказать ему делать что-то).
инициация - это когда вы устанавливаете набор начальных условий для чего-то. Что - то может быть объектом, где вы говорите ему инициировать себя, или просто переменной, которой вы присваиваете значение.
объект может инициализировать некоторые другие вещи или даже создавать другие объекты как часть его инициация.
разница в том, что создание экземпляра-это создание вещи, которая может делать вещи; инициация-это то, что делается.
см. документацию: https://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html
" точка originOne = новая точка(23, 94);
Declaration: The code set in bold are all variable declarations that associate a variable name with an object type. Instantiation: The new keyword is a Java operator that creates the object. Initialization: The new operator is followed by a call to a constructor, which initializes the new object."
создание экземпляра относится к выделению памяти для создания экземпляра класса, тогда как инициализация относится к именованию этого экземпляра путем присвоения имени переменной этому экземпляру.
например:
SqlConnection conn = new SqlConnection();здесь
new- Это ключевое слово, которое выделяет память для экземпляра иconn- это имя переменной, назначенное для этого экземпляра.
другие объясняли разницу, поэтому я не буду вдаваться в подробности. Но бывают случаи, когда создание экземпляра не инициализирует должным образом объект. Когда вы создаете экземпляр объекта, вы также инициализируете его с некоторыми данными. Класс / тип будет иметь логику инициализации, тогда как логика создания экземпляра обычно выполняется
newключевое слово (в основном выделение памяти, копирование ссылок и т. д.). Но создание экземпляра не обязательно должно приводить к допустимому состоянию для объектов, когда мы можем сказать, что объект uninitialzed. Вот практический пример, где объект может быть создан, но не инициализирован (извините, например, в C#).class P { string name = "Ralf"; } WriteLine(new P().name); // "Ralf"; WriteLine((FormatterServices.GetUninitializedObject(typeof(P)) as P).name); // null
GetUninitializedObjectНе вызова конструктора для создания экземпляра объекта (но внутри).можно также утверждать, что типы значений не создаются, а только инициализируются, поскольку при этом не требуется новое выделение
new..но это зависит от определения экземпляра.
мы можем видеть это таким образом. Для строки кода ниже:
var p = new Person();приведенная выше строка может быть прочитана следующим образом:
- переменная p была инициализации как человек класса
- класс человек инстанцировать в переменной p
предмет ссылки или контекст имеет значение. Если говорить в терминах переменная, мы используем слово инициализации. Если говорить в терминах класса/типа, мы используем слово instantiate.
Comments