C#
Strlen в C#: чем заменить и как узнать длину строки
В C# функции strlen нет. Если нужно узнать длину строки, используйте свойство Length: text.Length. Запрос strlen обычно приходит от тех, кто видел C или C++, где длину C-строки получают через функцию strlen. В C# строка — это объект string, и длина хранится в свойстве
Минимальный пример:
string text = "Hello";
Console.WriteLine(text.Length);
Вывод:
5
Почему не strlen
В языке C строка часто представлена как массив символов, который заканчивается нулевым символом. Поэтому функция strlen считает символы до этого маркера. В C# строка устроена иначе: это объект типа string, у которого уже есть свойство Length
Поэтому писать так нельзя:
int size = strlen(text);
Компилятор C# не знает функцию strlen, если вы сами ее не написали. Правильный вариант:
int size = text.Length;
Проверка пользовательского ввода
Если строка приходит от пользователя, учитывайте null и пустой ввод:
Console.Write("Введите имя: ");
string? name = Console.ReadLine();
if (string.IsNullOrWhiteSpace(name))
{
Console.WriteLine("Имя не введено");
}
else
{
Console.WriteLine($"Символов: {name.Length}");
}
IsNullOrWhiteSpace проверяет сразу три случая: null, пустую строку и строку из пробелов
Length и кириллица
Для обычных русских слов Length работает ожидаемо:
string city = "Казань";
Console.WriteLine(city.Length);
Результат:
6
Но есть тонкость: Length считает не «визуальные буквы», а элементы UTF-16. Для большинства учебных задач это неважно. Если вы работаете с эмодзи, сложными символами или точной типографикой, потребуется более аккуратная обработка текста. Для проверки имени, пароля, комментария и обычного ввода Length подходит
Безопасный вариант в одну строку
Если строка может быть null, можно получить длину так:
string? text = null;
int length = text?.Length ?? 0;
Console.WriteLine(length);
Оператор ?. пытается взять Length только если строка не null. Оператор ?? подставляет 0, если слева получилось null. Такой код часто используют для необязательных полей: комментария, второго имени, промокода, необязательного описания товара
Если пустая строка и null для вашей задачи означают разные вещи, не сводите их автоматически к нулю. Например, в форме регистрации null может означать, что поле вообще не пришло с клиента, а "" — что пользователь стер значение. Для учебной консольной программы это редко важно, но в API и формах различие бывает полезным
Строка, массив и список
У строки и массива есть Length:
string title = "Order";
int[] numbers = { 1, 2, 3 };
Console.WriteLine(title.Length);
Console.WriteLine(numbers.Length);
У списка List<T> используется Count:
List<string> names = new() { "Анна", "Илья" };
Console.WriteLine(names.Count);
Если написать names.Length, будет ошибка компиляции
Как объяснить это себе коротко
strlen — это привычка из C. Length — привычный путь C#. Если вы пишете C#-код, думайте не «вызвать функцию для строки», а «взять свойство строки». Строка уже знает свою длину, поэтому вы просто обращаетесь к text.Length
Частые ошибки
Первая ошибка — искать strlen в C# и не понимать, почему компилятор ругается. Вторая — вызывать Length у null: text.Length упадет, если строки нет. Третья — путать Length и Count. Четвертая — считать, что Length обрезает строку. Он только возвращает число символов, сама строка не меняется
Мини-задача: спросите у пользователя пароль. Если длина меньше 8 символов, выведите «слишком короткий». Если 8 или больше, выведите «подходит»
Что почитать дальше по C#
- Length в C#: как узнать длину строки, массива и списка
- Типы, переменные и строки в C#
- Console.ReadLine в C#
- Рубрика C#
Источники: Microsoft String.Length, C# strings
Что почитать дальше по C#
Если нужен общий маршрут по теме, откройте рубрику C#. Для соседних задач пригодятся эти разборы:
- Length в C#: как узнать длину строки, массива и списка
- C# с нуля: первый проект через dotnet new
- Как установить .NET SDK для C#
- Классы и свойства в C#: первый пример