Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 46

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 40 41 42 43 44 45 < 46 > 47 48 49 50 51 52 .. 320 >> Следующая

// Статические члены System.Object
Person рЗ = new Person("Sally". "Jones", "333". 4); Person p4 = new PersonC"Sally". "Jones". "333", 4);
Il Одинаково ли внутреннее состояние рЗ и р4? Да!
Console.WnteLine("P3 and Р4 have same state: {0}". object.EqualS (p3, p41):
II Представляют ли они один и тот же обьект в оперативной памяти? Нет! Console.WriteLine Г РЗ and Р4 are pointing to same object: (Q}".
object.ReferenceEquals(рЗ, p4)):
Таким образом, используя эти варианты методов EquaIs',) и ReferenceEquslsf\, вы можете просто передавать два объекта любого типа классу System. Object (не за-' бывайте, что эти методы — статические) — все остальные операции по сравнению произведены автоматически.
Системные типы данных и псевдонимы С#
Как уже говорил* ь, любой встроенный тип данных С# — это всего лишь иеевдд-ним для существующего типа, определенного в пространстве имен System. В табл. 2.4
перечислены все системные типы ЛаПИЫХ, соответствующие им псевдонимы "Сг:::
а также информация о совместимости данных типов с CLS.
таблица 2.4. Системные типы данных и псевдонимы С#
ПСЄВДО- Соот- Систем- Диапазон Назначение
НИМ С# ветст- ный тип хранимой
вует ли информации
CLS
sbyte Нет SByte
byte Да Byte
short Да Inr.16
ushort Нет UIntl6
int Да ІпШ
uint Нет UInt32
long Да lnt64
ulong Нет UInt64
От -128 до 127 От 0 до 255
От 32 768 до 32 767 От 0 до 65 535
От-2 147 483 648
ДО 2 147 483 647
От 0 до 4 294 967 295
От -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807
От О
до 18 446 744 073 709 551 615
Знаковое число
Беззнаковое 8 битовое число Знаковое 16-битовое число
числе
Знаковое 32-битовое число Беззнаковое 3 2-бито&ое число Знаковое 64-битовое число
Беззнаковое 64-битовое число продолжение А
96 Глава 2 • Основы языка С# Таблица 2.4 {продолжение)
Псевдо- Соот- Систем- Диапазон Назначение
нимС# ветст- ныйтип хранимой
вует ли CLS информации
char Да Char От U-i-OOOO до U+ffff Один №-битсвый символ Unicode
float Да Single Or !,БхІСҐ15 до 3,4x10м 32-6vsTDsoe значение с плавающей запятой
double Да Double От 5,0 хні «до 1,7 x 10м 64-битовое значение ¦с плавающей запятой
ibool Да Boolean true или false Представляет «истину» или «ложь»
decimal Да Decimal От 10° до ;о '96-битовое знаковое значение
string Да String Ограничено только системной памятью Представляет набор символов Unicode
object Да Object Практически все что угодно. Всетипы происходят от System.Object, поэтому объектом является все Класс, базовый для всех типов во вселенной ,NET
Отношения между основными системными типами (а также теми, с которыми нам только предстоит познакомиться) представлены нарис. 2.10.
Как мы уже неоднократно убеждались, все типы происходят от System.Object. Поскольку тип данных i nt — это всего лишь более простая и удобная Запись системного типа Int32, такой синтаксис вполне допустим:
// Помните! int в С# - всего лишь псевдоним для System. Int32 Console. WriteUnen2. ToStn ngO);
Обратите также внимание, что только часть типов С# является CLS-совмеечнмой. Если вы создаете свои типы, которые будут использоваться в многоязыковой среде, желательно ограничиться лишь СLS-совместимыми типами. Запоминать на самом деле надо не так много: достаточно принять за правило не использовать беззнаковые типы в определенияхлюбых открытых членов типов. Этим вы гарантируете, что ваши классы, интерфейсы и структуры смогут нормально работать с любым языком .NET. В главе 7 мы познакомимся со специальным атрибутом уровня сборки, который поможет вам убедиться в том, что все типы данных в сборке соответствуют правилам CLS.
Большинство встроенных типов данных С# являются производными от типа System. VaIueType. Единственное назначение этого типа — замещение некоторых методов, определенных в System. Object, таким образом, чтобы они могли нормально работать со структурными типами. В действительности сигнатуры этих методов в System. Object и Sy stem. VaI ueType совпадают. За счет замещения, например, при сравнении значений двух целочисленных переменных используется структурная, а не ссылочная семантика:
Systera.Int32 1ntA= 1000; // То же. что int intA - 1000: System.Int32 intB - 1000; // То же. что int intB = 1000;
// Сравнение значений дает "истинно" if (intA - - 1ntB)
Console.WriteLineС"Same value!");
Системные типы данных и псевдонимы 97
Object
Туре
String
Array
Exception.
Delegate
M и ItI Cast De legate
Ц-1 Decimal.
Value Type-
Любой тип, производный от ValueType -это структура, а не класс
I
Boolean
Byte
Char
J
Uint16
Uin02
Ulnt64
Double
Void
Int16
Data Tl me
Int32
GuId
Int64
TimeSpan
Sbyte
Single
Enum
Рис, 2.10. Иерархия системных типов
У каждого снеточного типа данных (к примеру, Int32, Char, Bool ear и т. п.) есть схожий набор членов, которые могут оказаться весьма полезными. Полный список всех этих членов мы приводить не будем (его легко получить с электронно; ¦ документацией), однако о двух членах все же стоит упомянуть. Речь идет о свойствах и Ж lvalue. Первое позволяет получить информацию о максимальном значении, для хранения которого можно использовать данный тип, а второе, соответственно — о минимальном. Предположим, что мы создали переменную типа System. U Int 16 и занялись кое-какими операциями с ней:
Предыдущая << 1 .. 40 41 42 43 44 45 < 46 > 47 48 49 50 51 52 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100