Net framework 5, а также среды Visual Studio 2012 и C#



Download 6,27 Mb.
Pdf ko'rish
bet164/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   160   161   162   163   164   165   166   167   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C

таблица 8.1.
.Унарные.операторы.С#.и.CLS-совместимые.имена.
соответствующих.методов
Оператор C#
имя специального метода
рекомендуемое CLS-совместимое 
имя метода
+
op_UnaryPlus
Plus

op_UnaryNegation
Negate
!
op_LogicalNot
Not
~
op_OnesComplement
OnesComplement
продолжение



228
Глава.8 .Методы
Оператор C#
имя специального метода
рекомендуемое CLS-совместимое 
имя метода
++
op_Increment
Increment
--
op_Decrement
Decrement
Нет
op_True
IsTrue { get; }
Нет
op_False
IsFalse { get; }
таблица 8.2.
.Бинарные.операторы.и.их.CLS-совместимые.имена.методов
Оператор C#
имя специального метода
рекомендуемое CLS-совместимое 
имя метода
+
op_Addition
Add

op_Subtraction
Subtract
*
op_Multiply
Multiply
/
op_Division
Divide
%
op_Modulus
Mod
&
op_BitwiseAnd
BitwiseAnd
|
op_BitwiseOr
BitwiseOr
^
op_ExclusiveOr
Xor
<<
op_LeftShift
LeftShift
>>
op_RightShift
RightShift
==
op_Equality
Equals
!=
op_Inequality
Equals
<
op_LessThan
Compare
>
op_GreaterThan
Compare
<=
op_LessThanOrEqual
Compare
>=
op_GreaterThanOrEqual
Compare
В спецификации CLR определены многие другие операторы, поддающиеся пере-
грузке, но C# их не поддерживает. Они не очень распространены, поэтому я их здесь 
не указал. Полный список есть в спецификации ECMA (
www ecma-international org/
publications/standards/Ecma-335 htm
) общеязыковой инфраструктуры CLI, разделы 
10.3.1 (унарные операторы) и 10.3.2 (бинарные операторы).
таблица 8.1
.(
продолжение
)


229
Методы.перегруженных.операторов
ПриМеЧание
Если.изучить.фундаментальные.типы.библиотеки.классов. NET.Framework.(FCL).—.
Int32,.Int64,.UInt32.и.т .д ,.—.можно.заметить,.что.они.не.определяют.методы.пере-
груженных.операторов .Дело.в.том,.что.компиляторы.целенаправленно.ищут.опе-
рации.с.этими.примитивными.типами.и.генерируют.IL-команды,.манипулирующие.
экземплярами.этих.типов .Если.бы.эти.типы.поддерживали.соответствующие.методы,.
а.компиляторы.генерировали.вызывающий.их.код,.то.каждый.такой.вызов.снижал.бы.
быстродействие.во.время.выполнения .Кроме.того,.чтобы.реализовать.ожидаемое.
действие,.такой.метод.в.конечном.итоге.все.равно.исполнял.бы.те.же.инструкции.
языка.IL .Для.вас.это.означает.следующее:.если.язык,.на.котором.вы.пишете,.не.
поддерживает.какой-либо.из.фундаментальных.типов.FCL,.вы.не.сможете.выполнять.
действия.над.экземплярами.этого.типа 
Операторы и взаимодействие языков программирования
Перегрузка операторов очень полезна, поскольку позволяет разработчикам 
лаконично выражать свои мысли в компактном коде. Однако не все языки под-
держивают перегрузку операторов; например, при использовании языка, не под-
держивающего перегрузку, он не будет знать, как интерпретировать оператор 
+
(если только соответствующий тип не является элементарным в этом языке), 
и компилятор сгенерирует ошибку. При использовании языков, не поддержи-
вающих перегрузку, язык должен позволять вызывать методы с приставкой 
op_
(например, 
op_Addition
) напрямую.
Если вы пишете на языке, не поддерживающем перегрузку оператора 
+
путем 
определения в типе, ничто не мешает типу предоставить метод 
op_Addition
. Логично 
ожидать, что в C# можно вызвать этот метод 
op_Addition
, указав оператор 
+
, но это 
не так. Обнаружив оператор 
+
, компилятор C# ищет метод 
op_Addition
с флагом 
метаданных 
specialname
, который информирует компилятор, что 
op_Addition
— 
это перегруженный операторный метод. А поскольку метод 
op_Addition
создан на 
языке, не поддерживающем перегрузку, в методе флага 
specialname
не будет, 
и компилятор C# вернет ошибку. Ясно, что код любого языка может явно вызывать 
метод по имени 
op_Addition
, но компиляторы не преобразуют оператор 
+
в вызов 
этого метода.

Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   160   161   162   163   164   165   166   167   ...   658




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish