Junior
141
questionbank
Расскажите о классификации типов в C#.
Answer from AI
sobes.tech AI
Types в C# делятся на две основные категории:
-
Types значений (Value Types): Хранят данные непосредственно в своей памяти. При присвоении или передаче по значению копируется само значение. Наследуются от
System.ValueType. Аллоцируются в стеке (для локальных переменных) или в теле объекта (для полей объектов).- Простые типы:
int,float,bool,charи т.д. - Перечисления (
enum) - Структуры (
struct) - Nullable value types (
int?,DateTime?)
- Простые типы:
-
Ссылочные Types (Reference Types): Хранят ссылку на данные, которые хранятся в куче. При присвоении или передаче по ссылке копируется ссылка, а не сами данные. Не наследуются от
System.ValueType.- Классы (
class) - Интерфейсы (
interface) - Делегаты (
delegate) - Массивы (
array) - Строки (
string) - хотя ведут себя как immutable value types, являются ссылочным типом.
- Классы (
Основное различие в том, где хранится значение и как ведут себя присваивание и передача в методы.
Пример:
// Value Type
int a = 10;
int b = a; // Копируется значение 10
b = 20; // a остается равным 10
// Reference Type
MyClass obj1 = new MyClass { Value = 10 };
MyClass obj2 = obj1; // Копируется ссылка на тот же объект
obj2.Value = 20; // obj1.Value также становится 20
class MyClass
{
public int Value { get; set; }
}