Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Страница 55

Язык программирования C#9 и платформа .NET5 - _029.png

Не вдаваясь глубоко в детали классов

System.Object
и
System.ValueType
, важно уяснить, что поскольку любое ключевое слово C# (скажем,
int
) представляет собой просто сокращенное обозначение соответствующего системного типа (в данном случае
System.Int32
), то приведенный ниже синтаксис совершенно законен. Дело в том, что тип
System.Int32
(
int
в С#) в конечном итоге является производным от класса
System.Object
и, следовательно, может обращаться к любому из его открытых членов, как продемонстрировано в еще одной вспомогательной функции:

static void ObjectFunctionality()

{

  Console.WriteLine("=> System.Object Functionality:");

<b>  // Ключевое слово int языка C# - это в действительности сокращение для</b>

<b>  // типа System.Int32, который наследует от System.Object следующие члены:</b>

  Console.WriteLine(&quot;12.GetHashCode() = {0}&quot;, 12.GetHashCode());

  Console.WriteLine(&quot;12.Equals(23) = {0}&quot;, 12.Equals(23));

  Console.WriteLine(&quot;12.ToString() = {0}&quot;, 12.ToString());

  Console.WriteLine(&quot;12.GetType() = {0}&quot;, 12.GetType());

  Console.WriteLine();

}

Вызов метода

ObjectFunctionality()
внутри
Main()
дает такой вывод:

=&gt; 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(&quot;=&gt; Data type Functionality:&quot;);

  Console.WriteLine(&quot;Max of int: {0}&quot;, int.MaxValue);

  Console.WriteLine(&quot;Min of int: {0}&quot;, int.MinValue);

  Console.WriteLine(&quot;Max of double: {0}&quot;, double.MaxValue);

  Console.WriteLine(&quot;Min of double: {0}&quot;, double.MinValue);

  Console.WriteLine(&quot;double.Epsilon: {0}&quot;, double.Epsilon);

  Console.WriteLine(&quot;double.PositiveInfinity: {0}&quot;,

    double.PositiveInfinity);

  Console.WriteLine(&quot;double.NegativeInfinity: {0}&quot;,

    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
(которые выдают, соответственно, строки
&quot;True&quot;
и
&quot;False&quot;
).

Вот пример:

Console.WriteLine(&quot;bool.FalseString: {0}&quot;, bool.FalseString);

Console.WriteLine(&quot;bool.TrueString: {0}&quot;, bool.TrueString);

Члены System.Char

Текстовые данные в C# представляются посредством ключевых слов

string
и
char
, которые являются сокращенными обозначениями для типов
System.String
и
System.Char
(оба основаны на Unicode). Как вам уже может быть известно,
string
представляет непрерывное множество символов (например,
&quot;Hello&quot;
), a
char
— одиночную ячейку в
string
(например,
'Н'
).