Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csPmScPnm 184 of 436 menu
◀ ▶

Совпадение имени с параметром в C#

Параметр локальной функции - локальная переменная на время вызова. Имя параметра попадает во внутреннюю область функции. Если снаружи уже объявлена локальная переменная с тем же именем, компилятор выдает ошибку CS0136: имя занято во внешней области и не может быть объявлено снова во вложенной.

Ошибочный код:

int num = 1; void Show(int num) { // error Console.WriteLine(num); }

Программа не собирается: параметр num конфликтует с внешней num. Исправление - разные имена у внешней переменной и параметра:

int num = 1; void Show(int value) { Console.WriteLine(value); // prints 1 } Show(num);

Изменение параметра по-прежнему не меняет внешнюю переменную - работает копия значения:

int num = 1; void Show(int value) { value = 2; } Show(num); Console.WriteLine(num); // prints 1

Если параметр не нужен, локальная функция без параметров может читать и менять внешнюю num через захват, но не объявить внутри вторую num:

int num = 1; void Show() { num = 2; } Show(); Console.WriteLine(num); // prints 2

Определите, соберется ли программа:

int score = 10; void Print(int score) { Console.WriteLine(score); } Print(score);

Исправьте код: внешняя переменная должна остаться total, параметр назовите по-другому и выведите переданное значение:

int total = 5; void Show(int total) { Console.WriteLine(total); } Show(total);

Определите, соберется ли программа:

int num = 1; void Show() { int num = 2; } Show(); Console.WriteLine(num);
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить