C#
Length в C#: как узнать длину строки, массива и списка
В C# Length используют для строки и массива. Для List<T> используется не Length, а Count. Если нужно узнать, сколько символов в строке, пишите text.Length. Если нужно узнать, сколько элементов в массиве, пишите numbers.Length
Минимальный пример:
string name = "Dinar";
Console.WriteLine(name.Length);
Вывод:
5
Длина строки через Length
string.Length возвращает количество символов в строке:
string city = "Kazan";
Console.WriteLine(city.Length);
Результат:
5
Можно использовать это в проверках:
string password = "qwerty";
if (password.Length < 8)
{
Console.WriteLine("Пароль слишком короткий");
}
Такой код часто встречается в формах регистрации, настройках профиля и проверке пользовательского ввода
Длина массива через Length
У массива тоже есть Length:
int[] scores = { 10, 8, 9 };
Console.WriteLine(scores.Length);
Вывод:
3
Через Length удобно проходить массив циклом:
int[] scores = { 10, 8, 9 };
for (int i = 0; i < scores.Length; i++)
{
Console.WriteLine(scores[i]);
}
Важная деталь: последний индекс массива — это Length - 1, потому что индексы начинаются с нуля
Почему у List не Length, а Count
У списка List<T> используется Count:
List<string> tasks = new List<string>
{
"Проверить почту",
"Отправить счет"
};
Console.WriteLine(tasks.Count);
Результат:
2
Если написать tasks.Length, компилятор покажет ошибку. Это нормально: список и массив — разные типы
Частые ошибки
Путать Length и Count
Запомните коротко:
string -> Length
array -> Length
List -> Count
Получать Length у null
Такой код упадет:
string? text = null;
Console.WriteLine(text.Length);
Безопасный вариант:
string? text = null;
Console.WriteLine(text?.Length ?? 0);
Если строка null, программа выведет 0
Выходить за границы массива
Ошибка:
int[] numbers = { 1, 2, 3 };
Console.WriteLine(numbers[numbers.Length]);
Правильно:
Console.WriteLine(numbers[numbers.Length - 1]);
Length и пустая строка
Пустая строка — это не null. У нее есть длина, просто она равна нулю:
string empty = "";
Console.WriteLine(empty.Length);
Результат:
0
А вот null означает, что строки нет вообще:
string? text = null;
Поэтому проверка пользовательского ввода часто выглядит так:
if (string.IsNullOrWhiteSpace(text))
{
Console.WriteLine("Строка пустая или не задана");
}
IsNullOrWhiteSpace удобнее, чем вручную проверять null, пустую строку и строку из пробелов
Практический сценарий: ограничение комментария
Допустим, пользователь пишет комментарий, а вам нужно разрешить не больше 200 символов:
Console.Write("Комментарий: ");
string? comment = Console.ReadLine();
if (string.IsNullOrWhiteSpace(comment))
{
Console.WriteLine("Комментарий пустой");
}
else if (comment.Length > 200)
{
Console.WriteLine("Комментарий слишком длинный");
}
else
{
Console.WriteLine("Комментарий принят");
}
Это уже не абстрактный пример, а типовая логика формы: проверить, что пользователь что-то ввел, и не дать слишком длинное значение
Мини-задание
Напишите программу, которая просит пользователя ввести имя и проверяет, что в имени не меньше двух символов:
Console.Write("Введите имя: ");
string? name = Console.ReadLine();
if (string.IsNullOrWhiteSpace(name) || name.Length < 2)
{
Console.WriteLine("Имя слишком короткое");
}
else
{
Console.WriteLine($"Привет, {name}!");
}
Проверьте ввод A, Dinar и пустую строку
Что почитать дальше по C#
Если нужен общий маршрут по теме, откройте рубрику C#. Для соседних задач пригодятся эти разборы:
- strlen в C#: чем заменить и как узнать длину строки
- C# с нуля: первый проект через dotnet new
- Как из массива удалить элемент C#
- Как установить .NET SDK для C#