Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
}Использование неявной типизации лишь потому, что она возможна, некоторые считают плохим стилем (если известно, что необходима переменная типа
List<int>В качестве связанного замечания: в главе 6 упоминалось, что
System.ObjectobjectПредположим, что есть простой класс по имени
PersonFirstNameLastNamestringstatic void UseObjectVariable(){<b> // Пусть имеется класс по имени Person.</b> object o = new Person() { FirstName = "Mike", LastName = "Larson" };<b> // Для получения доступа к свойствам Person</b><b>.</b><b> // переменную о потребуется привести к Person</b> Console.WriteLine("Person's first name is {0}", ((Person)o).FirstName);}А теперь возвратимся к ключевому слову
dynamicdynamicSystem.Objectstatic void PrintThreeStrings(){ var s1 = "Greetings"; object s2 = "From"; dynamic s3 = "Minneapolis"; Console.WriteLine("s1 is of type: {0}", s1.GetType()); Console.WriteLine("s2 is of type: {0}", s2.GetType()); Console.WriteLine("s3 is of type: {0}", s3.GetType());}в случае вызова приведет к такому выводу:
s1 is of type: System.Strings2 is of type: System.Strings3 is of type: System.StringДинамическая переменная и переменная, объявленная неявно или через ссылку на
System.Objectdynamicstatic void ChangeDynamicDataType(){ // Объявить одиночный динамический элемент данных по имени t.
dynamic t = "Hello!"; Console.WriteLine("t is of type: {0}", t.GetType()); t = false; Console.WriteLine("t is of type: {0}", t.GetType()); t = new List<int>(); Console.WriteLine("t is of type: {0}", t.GetType());}Вот вывод:
t is of type: System.Stringt is of type: System.Booleant is of type: System.Collections.Generic.List`1[System.Int32]Имейте в виду, что приведенный выше код успешно скомпилировался и дал бы идентичный результат, если бы переменная
tSystem.ObjectdynamicВызов членов на динамически объявленных данных
Учитывая то, что динамическая переменная способна принимать идентичность любого типа на лету (подобно переменной типа
System.ObjectНо (и это очень важное "но") допустимость указываемых членов компилятор проверять не будет! Вспомните, что в отличие от переменной, определенной с типом
System.ObjectПохожие книги на "Язык программирования C#9 и платформа .NET5", Троелсен Эндрю
Троелсен Эндрю читать все книги автора по порядку
Троелсен Эндрю - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки mir-knigi.info.