Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Заметка
Эта статья является спецификацией компонентов. Спецификация служит проектным документом для функции. Она включает предлагаемые изменения спецификации, а также информацию, необходимую во время проектирования и разработки функции. Эти статьи публикуются до тех пор, пока предложенные изменения спецификации не будут завершены и включены в текущую спецификацию 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