Параметры лямбда-отмены
Заметка
Эта статья является спецификацией компонентов. Спецификация служит проектным документом для функции. Она включает предлагаемые изменения спецификации, а также информацию, необходимую во время проектирования и разработки функции. Эти статьи публикуются до тех пор, пока предложенные изменения спецификации не будут завершены и включены в текущую спецификацию ECMA.
Может возникнуть некоторое несоответствие между спецификацией компонентов и завершенной реализацией. Эти различия были зафиксированы в соответствующих заметках встречи по проектированию языка (LDM) .
Дополнительные сведения о процессе внедрения спецификаций функций в стандарт языка C# см. в статье о спецификациях .
Проблема чемпиона: https://github.com/dotnet/csharplang/issues/111
Сводка
Разрешить использовать подстановочные символы (_
) в качестве параметров лямбда-выражений и анонимных методов.
Например:
- лямбда-коды:
(_, _) => 0
,(int _, int _) => 0
- анонимные методы:
delegate(int _, int _) { return 0; }
Мотивация
Неиспользуемые параметры не должны называться. Намерение отбросов ясно, т. е. они неиспользованы или отброшены.
Подробный дизайн
Параметры метода — §15.6.2 В списке лямбда-метода или анонимного метода с несколькими параметрами с именем _
, такие параметры являются отменными параметрами.
Примечание. Если один параметр называется _
то это обычный параметр по причинам обратной совместимости.
Параметры игнорирования не добавляют никаких имен в области видимости.
Обратите внимание, что они не приводят к сокрытию имен _
(с подчеркиванием).
Простые имена (§12.8.4) Если K
равно нулю и simple_name находится в блоке , и если блок (или заключающий блок) локального пространства объявления переменной (объявления — §7.3) содержит локальную переменную, параметр (за исключением параметров-пустышек) или константу с именем I
, то simple_name относится к этой локальной переменной, параметру или константе и классифицируется как переменная или значение.
Области — §7.7 За исключением параметров отмены, область параметра, объявленного в лямбда-выражении (§12.19), — это тело анонимной функции этого лямбда-выражения. За исключением параметров отмены, область параметра, объявленного в анонимном методе (§12.19), — это блок этого анонимного метода.
Связанные разделы спецификаций
- Соответствующие параметры — §12.6.2.2
C# feature specifications