Sobes.tech
Junior
154
questionbank

Что такое ссылочные типы данных в C# и какие у них особенности?

Answer from AI

sobes.tech AI

Ссылочные типы данных хранят ссылки на объекты в куче. Переменные ссылочного типа содержат адрес в памяти, где расположен сам объект.

Особенности:

  • Передача по ссылке: Присвоение одной переменной ссылочного типа значения другой переменной такого же типа приводит к тому, что обе переменные указывают на один и тот же объект в памяти.
  • Управление памятью: Объекты ссылочных типов размещаются в управляемой куче. Сборщик мусора автоматически освобождает память, занятую объектами, на которые больше нет ссылок.
  • Значение по умолчанию: Значением по умолчанию для ссылочного типа является null.
  • Наследование и полиморфизм: Ссылочные типы поддерживают наследование, что позволяет создавать иерархии классов и использовать полиморфизм.
  • Сравнение: Оператор == по умолчанию сравнивает ссылки, а не содержимое объектов.

Примеры:

  • Классы (class)
  • Интерфейсы (interface)
  • Делегаты (delegate)
  • Массивы (array)
  • Строки (string) (хотя string является неизменяемым ссылочным типом)
// Пример ссылочного типа Class1
public class Class1
{
    public int Value { get; set; }
}

// Создание экземпляра Class1
Class1 obj1 = new Class1 { Value = 10 };

// Присвоение ссылки
Class1 obj2 = obj1;

// Изменение значения через obj2 влияет на obj1
obj2.Value = 20;

// Теперь obj1.Value равно 20
System.Console.WriteLine(obj1.Value);