Intern
132
questionbank
Какие существуют типы данных в .NET?
Answer from AI
sobes.tech AI
В .NET существует две основные категории типов данных: типы значений (Value Types) и ссылочные типы (Reference Types).
Типы значений (Value Types):
- Хранят свои данные непосредственно в стеке или внутри типа, в котором они объявлены.
- При присваивании или передаче по значению создается копия данных.
- Наследуются от
System.ValueType. - Примеры:
- Предопределенные value types:
- Целочисленные типы:
sbyte,byte,short,ushort,int,uint,long,ulong. - Типы с плавающей запятой:
float,double. - Десятичный тип:
decimal. - Логический тип:
bool. - Символьный тип:
char.
- Целочисленные типы:
- Пользовательские value types:
struct,enum.
- Предопределенные value types:
Ссылочные типы (Reference Types):
- Хранят ссылку на данные, которые находятся в куче.
- При присваивании или передаче по значению копируется только ссылка, указывающая на те же данные в куче.
- Наследуются от
System.Object. - Примеры:
- Предопределенные reference types:
- Строковый тип:
string. - Объектный тип:
object.
- Строковый тип:
- Пользовательские reference types:
class,interface,delegate. - Массивы.
- Предопределенные reference types:
// Примеры value types
int age = 30; // Целочисленный тип
bool isActive = true; // Логический тип
char initial = 'J'; // Символьный тип
// Объявление struct (пользовательский value type)
struct Point
{
public int X;
public int Y;
}
// Примеры reference types
string name = "Alice"; // Строковый тип
object data = 123; // Объектный тип
// Объявление class (пользовательский reference type)
class Person
{
public string Name { get; set; }
}
// Объявление массива (reference type)
int[] numbers = { 1, 2, 3 };
Также стоит упомянуть о нулябельных типах значений (Nullable Value Types), которые позволяют типам значений иметь значение null. Они объявляются с помощью суффикса ? или типа Nullable<T>.
int? optionalAge = null; // Nullable int
Nullable<DateTime> birthDate = new DateTime(2000, 1, 1); // Эквивалентно DateTime?
Выбор между типами значений и ссылочными типами влияет на производительность, управление памятью и поведение при присваивании и передаче параметров.