Помощь в написании студенческих работ
Антистрессовый сервис

Простые (базовые) типы C# как типы CTS

РефератПомощь в написанииУзнать стоимостьмоей работы

Как уже упомянуто, метод System. GetTypeO возвращает название типа объекта, принятое в .NET Framework, а не в языке С#. Именно поэтому в результатах для row выведен тип System.Int64, а не long. При сравнении переменных с помощью выражения row. Equals (col) сравниваются их значения и в примере возвращается логическое значение False. Значением выражения row. ToStringO + col. ToStringO является… Читать ещё >

Простые (базовые) типы C# как типы CTS (реферат, курсовая, диплом, контрольная)

Система типов C# построена на основе классов, точнее, типов, имеющих общий базовый класс object. Простые (фундаментальные, базовые) типы, такие как int и char, на самом деле являются не самостоятельными типами, а представляют собой обозначения (условные названия) системных типов, представляемых платформой .NET Framework в виде соответствующих структур (см. табл. 5.1).

Таблица 5.1

Тип языка C# и тип CTS

Диапазон значений

Соответствие CLS

bool

System. Boolean.

true или false

есть.

byte

System.Byte.

от 0 до 255.

есть.

sbyte

System. SByte.

от -128 до 127.

нет.

char

System. Char.

от U+0000 до U+ffff.

есть.

decimal

System.Decimal.

(от -7.9 • 1028 до 7.9 • 1028)/(10 от о до 28).

есть.

double

System.Double.

от ±5.0 • 10-324до ±1.7 • 10308

есть.

float

System.Single.

от-3.4 • 1038 до +3.4 • 1038

есть.

int

System.Int32.

от -2 147 483 648 до 2 147 483 647.

есть.

uint

System.UInt32.

от 0 до 4 294 967 295.

нет.

long

System.Int64.

от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807.

есть.

ulong

System.UInt64.

от 0 до 18 446 744 073 709 551 615.

нет.

Тип языка C# и тип CTS.

Диапазон значений.

Соответствие CLS.

object.

System. Object.

любой тип данных.

есть.

short.

System.Intl6.

от -32 768 до 32 767.

есть.

ushort.

System.UIntl6.

от 0 до 65 535.

нет.

string.

System. String.

ограничен системными возможностями.

есть.

Итак, все предопределенные типы языка C# представляют в программах соответствующие им структуры из пространства имен System библиотеки .NET Framework. Казалось бы, что эквивалентность традиционных названий типов (например, int, char, string…) обозначениям типов в CTS (System.Int32, System. Char, System. String…) делает ненужным знакомство с соответствующими структурами из пространства System. Однако это не так. Имена системных типов используются в названиях средств библиотеки классов .NET Framework. Кроме того, при идентификации типа объекта, например, с помощью метода GetType (), для обозначения типа используется его системное имя, а не имя, принятое в С#.

Отображенное в табл. 5.1 соответствие типов языка C# и системных типов .NET Framework приходится учитывать в тех случаях, когда код на C# нужно использовать в разноязычных приложениях. Например, для целочисленных значений CTS предусматривает применение типов Byte, Intl6, Int32, Int64. Тем самым для разноязычных приложений недопустимы беззнаковые целочисленные типы (uint, ulong, ushort) и тип sbyte.

Несмотря на то, что в C# введены сокращенные обозначения простых типов, нет ограничения и на применение системных имен. Например, следующие два объявления целочисленной переменной с именем cluster эквивалентны:

int cluster = 33;

System.Int32 cluster = 33;

Кроме того, переменную простого типа можно объявить, используя и формат объявления объекта :

имя_типа имя_объекта = new имя_типа();

В этом случае в качестве имени типа используют или традиционное для С#, или системное обозначение типа. Имя_объекта — выбранный программистом идентификатор, new — специальная операция вызова конструктора того типа, который соответствует типу переменной. С механизмом конструкторов нам еще придется подробно знакомиться. Сейчас достаточно сказать, что назначение конструктора — разместить в памяти и инициализировать новый экземпляр объекта.

Пример двух эквивалентных объявлений с операцией new:

double radix = new doubleQ;

System.Double radix = new System. Double ();

В каждом из этих случаев объявлена вещественная переменная с именем radix типа double, которой с помощью конструктора выделяется участок памяти и присваивается предусмотренное по умолчанию нулевое значение.

Происхождение типов от общего базового класса System. Object позволяет применять к каждой переменной и константе следующие методы (перечислены не все):

  • • string ToString () — возвращает строку, содержащую символьное представление того объекта, к которому этот метод применен;
  • • System. Type GetType () — возвращает системный тип того объекта, к которому применен метод;
  • • bool Equals (object obj) — проверяет эквивалентность объектапараметра и объекта, к которому этот метод применен.

Прежде чем привести примеры применения перечисленных методов, напомним, что методы могут принадлежать классу или структуре (в этом случае они должны быть статическими), а могут относиться к конкретным объектам (экземплярам) класса или структуры (нестатические). В первом случае для обращения к методу (статическому) используется выражение.

имя_типа.имя_метода (аргументы).

Примером служит обращение Console. WriteLineO, где Console — имя библиотечного класса, представляющего консольный поток. Во втором случае для обращения к методу обязательно должен быть определен объект (экземпляр типа), и вызов осуществляет выражение.

имя_ссылки_на_объект.имя_метода (аргументы)

Напомнив синтаксис обращения к методам, приведем следующую программу, в которой к переменным базового типа значений применяются методы, унаследованные из класса object.

// 05_ei.cs — простые типы как наследники Object

using System;

class Program.

{

static void MainQ.

{

long row = 18L;

System.Int64 col = 423L;

Console.WriteLine («row.GetType ()= «+ row. GetTypeQ);

Console.WriteLine («row.Equals (col)= «+ row. Equals (col));

Console.WriteLine («row.ToString () + col. ToString ()=» + row. ToString () + col. ToString ());

Console.WriteLine («row + col = «+ (row + col));

} }

В программе переменные row и col определены с помощью разных обозначений одного и того же типа long. Значения указанные переменные получают за счет инициализации. Результаты выполнения программы:

row.GetType ()= System.Int64 row. Equals (col)= False row. ToString () + col. ToString ()=18 423 row + col = 441.

Как уже упомянуто, метод System. GetTypeO возвращает название типа объекта, принятое в .NET Framework, а не в языке С#. Именно поэтому в результатах для row выведен тип System.Int64, а не long. При сравнении переменных с помощью выражения row. Equals (col) сравниваются их значения и в примере возвращается логическое значение False. Значением выражения row. ToStringO + col. ToStringO является конкатенация строковых представлений значений переменных row и cal. Для сравнения, в следующем обращении к методу WriteLineO в скобки заключено выражение (row + col), и в этом случае в скобках выполняется не конкатенация строк, а арифметическое суммирование значений переменных.

Показать весь текст
Заполнить форму текущей работой