35 lines
2.2 KiB
Markdown
35 lines
2.2 KiB
Markdown
---
|
||
title: nameof Expressions
|
||
localeTitle: Имя выражения
|
||
---
|
||
# Имя выражения
|
||
|
||
Иногда вам требуется имя строки переменной, типа или члена для таких вещей, как сбор исключений, запись или изменение свойств измененных событий. До C # 6.0 вы можете использовать строковый литерал для таких целей.
|
||
|
||
# #
|
||
```
|
||
public void ProcessStudent(Student student)
|
||
{
|
||
if (student == null) throw new ArgumentNullException("student");
|
||
}
|
||
```
|
||
|
||
Однако, если параметр студента должен был быть переименован, вам также нужно будет запомнить строковый литерал. Теперь с выражениями nameof вам не нужно использовать строковые литералы, и компилятор сможет предупредить вас, если вы используете неправильное имя.
|
||
|
||
# #
|
||
```
|
||
public void ProcessStudent(Student student)
|
||
{
|
||
if (student == null) throw new ArgumentNullException(nameof(student));
|
||
}
|
||
```
|
||
|
||
Некоторые примеры того, где имена выражений могут быть полезными, включают:
|
||
|
||
* Выбрасывание исключений при проверке параметров
|
||
* Передача имени действия при настройке ссылок на действия MVC
|
||
* Необходимо передать имя свойства при запуске события с измененным свойством в классе, который реализует INotifyPropertyChanged
|
||
* Передача имени свойства при регистрации свойства зависимости XAML
|
||
* Включение имени переменной, типа или имени при регистрации
|
||
|
||
Следует отметить, что если вы укажете имя с квалифицированным именем, компилятор сгенерирует строку для самого правого имени. |