C#: Вызов метода — выражение
В программировании, выражение – нечто возвращающее результат, который можно использовать. Мы уже знаем достаточно много о выражениях и о принципах их построения. Математические операции (сложение, вычитание), строковые операции (конкатенация) – все это выражения:
1 + 5 * 3;
"Hex" + "Let";
// Переменные могут быть частью выражения
rate * 5;
Особенность выражений в том, что они возвращают результат, который можно, например, присвоить переменной или вывести на экран. Например:
// Тут выражение это 1 + 5
var sum = 1 + 5;
Console.WriteLine(sum);
Но не все в программировании является выражением. Определение переменной это инструкция, она не может быть частью выражения. То есть такой код выдаст ошибку:
// Бессмысленный код, который не сработает
10 + var sum = 1 + 5;
Почему об этом важно знать? Как вы увидите дальше, выражения можно комбинировать получая все более сложное поведение в самых неожиданных местах и самым неожиданным образом. Вы будете лучше понимать как можно соединять части кода, чтобы получить нужный результат.
Поговорим о методах. Вызов метода это выражение или нет? Мы знаем что методы возвращают результат, то есть да, они выражения. Из этого автоматически следует много интересного. Например мы можем использовать вызов метода прямо в математических операциях. Вот как можно получить индекс последнего символа в слове:
var name = "Stark";
// Получение свойства и вычитание вместе!
var lastIndex = name.Length - 1;
Console.WriteLine(lastIndex); // 4
В этом коде нет нового синтаксиса. Мы всего лишь соединили уже известные части опираясь на их природу. Можно пойти еще дальше:
var name = "Stark";
Console.WriteLine(name.Length - 1); // 4
Все это справедливо для любых методов, например строковых:
var name = "Stark";
// ToUpper() – переводит слово в верхний регистр
Console.WriteLine("House " + name.ToUpper()); // "House STARK"
Задание
Выведите на экран первую и последнюю буквы предложения, записанного в переменную text
, в следующем формате:
First: N Last: t
Ваша задача извлечь эти символы из строки и вставить в Console.WriteLine()
, не используя промежуточные переменные.
Упражнение не проходит проверку — что делать? 😶
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
- Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.
В моей среде код работает, а здесь нет 🤨
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Мой код отличается от решения учителя 🤔
Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Прочитал урок — ничего не понятно 🙄
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.
Полезное
Для получения длины строки используйте свойство
Length