Язык программирования C#9 и платформа .NET5
Шрифт:
Вот
Имейте в виду, что приведенный выше код успешно скомпилировался и дал бы идентичный результат, если бы переменная
Вызов членов на динамически объявленных данных
Учитывая то, что динамическая переменная способна принимать идентичность любого типа на лету (подобно переменной типа
Но (и это очень важное "но") допустимость указываемых членов компилятор проверять не будет! Вспомните, что в отличие от переменной, определенной с типом
Обратите внимание, что во втором вызове
Тем не менее, компилятор C# ни о каких ошибках не сообщает. Однако если вызвать метод
Необработанное исключение: Microsoft.CSharp.RuntimeBinder.
RuntimeBinderException: string не содержит определения для toupper
Другое очевидное отличие между обращением к членам динамических и строго типизированных данных связано с тем, что когда к элементу динамических данных применяется операция точки, ожидаемое средство IntelliSense среды Visual Studio не активизируется. Взамен IDE-среда позволит вводить любое имя члена, какое только может прийти вам на ум.
Отсутствие возможности доступа к средству IntelliSense для динамических данных должно быть понятным. Тем не менее, как вы наверняка помните, это означает необходимость соблюдения предельной аккуратности при наборе кода C# для таких элементов данных. Любая опечатка или символ в неправильном регистре внутри имени члена приведет к ошибке времени выполнения, в частности к генерации исключения типа
Класс
Поскольку динамические данные настолько изменчивы, любые обращения к членам переменной, объявленной с ключевым словом
Если вызвать метод
- Telegram
- Viber
- Skype
- ВКонтакте