Не вдаваясь глубоко в детали классов System.Object
и System.ValueType
, важно уяснить, что поскольку любое ключевое слово C# (скажем, int
) представляет собой просто сокращенное обозначение соответствующего системного типа (в данном случае System.Int32
), то приведенный ниже синтаксис совершенно законен. Дело в том, что тип System.Int32
(int
в С#) в конечном итоге является производным от класса System.Object
и, следовательно, может обращаться к любому из его открытых членов, как продемонстрировано в еще одной вспомогательной функции:
static void ObjectFunctionality
{
Console.WriteLine("=> System.Object Functionality:");
// Ключевое слово int языка C# - это в действительности сокращение для
// типа System.Int32, который наследует от System.Object следующие члены:
Console.WriteLine("12.GetHashCode = {0}", 12.GetHashCode);
Console.WriteLine("12.Equals(23) = {0}", 12.Equals(23));
Console.WriteLine("12.ToString = {0}", 12.ToString);
Console.WriteLine("12.GetType = {0}", 12.GetType);
Console.WriteLine;
}
Вызов метода ObjectFunctionality
внутри Main
дает такой вывод:
=> System.Object Functionality:
12.GetHashCode = 12
12.Equals(23) = False
12.ToString = 12
12.GetType = System.Int32
Члены числовых типов данных
Продолжая эксперименты со встроенными типами данных С#, следует отметить, что числовые типы .NET Core поддерживают свойства MaxValue
и MinValue
, предоставляющие информацию о диапазоне значений, которые способен хранить конкретный тип. В дополнение к свойствам MinValue
и MaxValue
каждый числовой тип может определять собственные полезные члены. Например, тип System.Double
позволяет получать значения для бесконечно малой (эпсилон) и бесконечно большой величин (которые интересны тем, кто занимается решением математических задач). В целях иллюстрации рассмотрим следующую вспомогательную функцию:
static void DataTypeFunctionality
{
Console.WriteLine("=> Data type Functionality:");
Console.WriteLine("Max of int: {0}", int.MaxValue);
Console.WriteLine("Min of int: {0}", int.MinValue);
Console.WriteLine("Max of double: {0}", double.MaxValue);
Console.WriteLine("Min of double: {0}", double.MinValue);
Console.WriteLine("double.Epsilon: {0}", double.Epsilon);
Console.WriteLine("double.PositiveInfinity: {0}",
double.PositiveInfinity);
Console.WriteLine("double.NegativeInfinity: {0}",
double.NegativeInfinity);
Console.WriteLine;
}
В случае определения литерального целого числа (наподобие 500
) исполняющая среда по умолчанию назначит ему тип данных int
. Аналогично литеральное число с плавающей точкой (такое как 55.333
) по умолчанию получит тип double
. Чтобы установить тип данных в long
, используйте суффикс l
или L
(4L
). Для объявления переменной типа float
применяйте с числовым значением суффикс f
или F
(5.3F
), а для объявления десятичного числа используйте со значением с плавающей точкой суффикс m
или М
(300.5М
). Это станет более важным при неявном объявлении переменных, как будет показано позже в главе.
Члены System.Boolean
Рассмотрим тип данных System.Boolean
. К допустимым значениям, которые могут присваиваться типу bool
в С#, относятся только true
и false
. С учетом этого должно быть понятно, что System.Boolean
не поддерживает свойства MinValue
и MaxValue
, но вместо них определяет свойства TrueString
и FalseString
(которые выдают, соответственно, строки "True"
и "False"
).
Вот пример:
Console.WriteLine("bool.FalseString: {0}", bool.FalseString);
Console.WriteLine("bool.TrueString: {0}", bool.TrueString);
Члены System.Char
Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT