В C# существует богатая система типов данных, которые можно разделить на несколько основных категорий. Рассмотрим их подробно.
byte b = 255; // 8-bit (0 до 255)
short s = -32768; // 16-bit (-32,768 до 32,767)
int i = 2147483647; // 32-bit (-2^31 до 2^31-1)
long l = 9223372036854775807; // 64-bit (-2^63 до 2^63-1)
float f = 3.14f; // 32-bit (```6-9 цифр точности)
double d = 3.14159; // 64-bit (```15-17 цифр точности)
decimal m = 3.14159m; // 128-bit (для финансовых расчетов)
bool flag = true; // или false
char c = 'A'; // 16-bit Unicode символ
string name = "C# Developer"; // Строка (неизменяемая)
object obj = new object(); // Базовый тип для всех типов
int[] numbers = new int[5]; // Массив
Пример класса (пользовательский ссылочный тип):
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
DateTime date = DateTime.Now; // Дата и время
TimeSpan duration = TimeSpan.FromHours(2); // Промежуток времени
Guid guid = Guid.NewGuid(); // Глобальный уникальный идентификатор
public struct Point
{
public int X { get; set; }
public int Y { get; set; }
}
int? nullableInt = null; // Может содержать null
dynamic dynamicVar = "Это строка";
dynamicVar = 42; // Теперь это число
var person = new { Name = "John", Age = 30 };
unsafe
{
int* pointer;
int value = 42;
pointer = &value;
Console.WriteLine(*pointer); // 42
}
List<string> strings = new List<string>();
Dictionary<int, string> dict = new Dictionary<int, string>();
public enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }
Days today = Days.Monday;
public delegate int MathOperation(int a, int b);
MathOperation add = (x, y) => x + y;
Характеристика | Value Types | Reference Types |
---|---|---|
Хранение | В стеке | В управляемой куче |
Наследование | Не поддерживают | Поддерживают |
Значение по умолчанию | 0/false | null |
Присвоение | Копирование значения | Копирование ссылки |
Примеры | int, struct, enum | class, interface, array |
C# предлагает богатую систему типов данных, включающую примитивные типы, ссылочные типы, типы значений, обобщенные типы и специальные типы. Понимание различий между этими типами и их правильное использование критически важно для написания эффективного и надежного кода. Выбор подходящего типа данных зависит от конкретной задачи, требований к производительности и семантики данных.