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#. Для соседних задач пригодятся эти разборы:

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x