Язык программирования C#9 и платформа .NET5. Страница 66
{ byte sum = (byte)(b1 + b2); Console.WriteLine("sum = {0} ", sum);}Подводя итоги по ключевым словам
checkeduncheckedchecked/checkeduncheckedНеявно типизированные локальные переменные
Вплоть до этого места в главе при объявлении каждой локальной переменной явно указывался ее тип данных:
static void DeclareExplicitVars(){<b> // Явно типизированные локальные переменные</b><b> // объявляются следующим образом:</b><b> // типДанных имяПеременной = начальноеЗначение;</b> int myInt = 0; bool myBool = true; string myString = "Time, marches on...";}В то время как многие согласятся с тем, что явное указание типа данных для каждой переменной является рекомендуемой практикой, язык C# поддерживает возможность неявной типизации локальных переменных с использованием ключевого слова
varvarintboolstringЧтобы прояснить роль неявной типизации, создайте новый проект консольного приложения по имени
ImplicitlyTypedLocalVarsProgram.csusing System;using System.Linq;Console.WriteLine("***** Fun with Implicit Typing *****");Добавьте следующую функцию, которая демонстрирует неявные объявления:
static void DeclareImplicitVars (){<b> // Неявно типизированные локальные переменные</b><b> // объявляются следующим образом:</b><b> // var имяПеременной = начальноеЗначение;</b> var myInt = 0; var myBool = true; var myString = "Time, marches on...";}На заметку! Строго говоря,
varvarvarВ таком случае, основываясь на первоначально присвоенных значениях, компилятор способен вывести для переменной
myIntSystem.Int32myBoolSystem.BooleanmyStringSystem.StringDeclareImplicitVars()static void DeclareImplicitVars(){ // Неявно типизированные локальные переменные, var myInt = 0; var myBool = true; var myString = "Time, marches on..."; // Вывести имена лежащих в основе типов. Console.WriteLine("myInt is a: {0}", myInt.GetType().Name); // Вывод типа myInt Console.WriteLine("myBool is a: {0}", myBool.GetType().Name); // Вывод типа myBool Console.WriteLine("myString is a: {0}", myString.GetType().Name); // Вывод типа myString}На заметку! Имейте в виду, что такую неявную типизацию можно использовать для любых типов, включая массивы, обобщенные типы (см. главу 10) и собственные специальные типы. В дальнейшем вы увидите и другие примеры неявной типизации. Вызов метода
DeclareImplicitVars()***** Fun with Implicit Typing *****myInt is a: Int32myBool is a: BooleanmyString is a: StringНеявное объявление чисел
Неявное объявление Как утверждалось ранее, целые числа по умолчанию получают тип
intdoubleDeclareImplicitNumerics