2. Предопределенные типы C#. Типы по значению и по ссылке. Упаковка и распаковка.
Предопределенные типы C
Типы по значению и по ссылке.
Все типы в платформе .NET Framework делятся на типы значений и ссылочные типы.
Значимые типы — это типы данных, объекты которых представлены фактическим значением объекта. Если экземпляр типа значения присваивается переменной, то эта переменная получает новую копию значения.
Ссылочные типы — это типы данных, объекты которых представлены ссылкой (аналогичной указателю) на фактическое значение объекта. Если экземпляр ссылочного типа присваивается переменной, то эта переменная будет ссылаться (указывать) на исходное значение. Копирования при этом не происходит.
Упаковка и распаковка.
Упаковка - процесс преобразования базового типа в тип object
. В примере i упакован в объект o
int i = 123;
object o = i;
Распаковка - обратный процесс, преобразования типа object
в базовый тип.
o = 345;
i = (int)o;
Более жизненный пример.
// Создаем список объектов
List<object> mixedList = new List<object>();
// Первым элементом добавляем строку
mixedList.Add("First Group:");
// Добавляем в список числа
for (int j = 1; j < 5; j++)
{
// j запаковывается в объект
mixedList.Add(j);
}
// Добавляем еще строку
mixedList.Add("Second Group:");
for (int j = 5; j < 10; j++)
{
mixedList.Add(j);
}
// Выводим содержимое списка
foreach (var item in mixedList)
{
Console.WriteLine(item);
}