Классы и дефолтная инициализация

419
07 августа 2021, 12:10

В C# в структурах запрещено использовать конструктор без параметров, так как он используется для инициализации членов структуры (обнуления выделяемой памяти). Также в структурах мы обязаны инициализировать все поля структуры в случае определения конструктора с параметрами. Но в классах ни первое, ни второе не обязательно. Как тогда в классах работает инициализация полей класса дефолтными значениями?

Answer 1

Все поля типов значений инициализируются значениями по умолчанию (0 для System.Int32, например), все поля ссылочных типов инициализируются нулевыми ссылками (null).

Answer 2

Значения полей класса инициализируются значениями по умолчанию.

Например,

public class TestClass
{
   public int _int;
   public string _string;
}
TestClass testClass = new TestClass();
int i = testClass._int; //0
string s = testClass._string; //null
READ ALSO
netcore 2.2 подключить стороннюю библиотеку на NetFramework 4.5.2

netcore 2.2 подключить стороннюю библиотеку на NetFramework 4.5.2

Для проекта на netcore 22 понадобилось использовать библиотеку скомпилированную под X86 NetFramework 4

152
Woocommerce Storefront. Добавить несколько цен в товар

Woocommerce Storefront. Добавить несколько цен в товар

В товаре предусмотрено 3 цены, в зависимости от размераВозле каждой цены кнопка "в корзину"

98
Прошу совета по разработке Cordova

Прошу совета по разработке Cordova

Хочу сделать мобильное кросс-платформенное приложение как instagramФункционал: загрузка фото, профили, лента, лайки и подобное

131