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



Download 6,27 Mb.
Pdf ko'rish
bet375/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   371   372   373   374   375   376   377   378   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C


Глава.20 .Исключения.и.управление.состоянием
.NET Framework столь привлекательной платформой для разработки программного 
обеспечения
1
. Но я хочу сказать, что все это является потенциальным источником 
ошибок, которые мы практически не можем контролировать. Пока программа 
работает, все хорошо: мы легко пишем код, который также легко читается и ре-
дактируется. Но как только случается сбой, оказывается, что понять, где именно 
произошла ошибка и в чем ее причина, практически невозможно. Вот пример, 
иллюстрирующий сказанное:
private static Object OneStatement(Stream stream, Char charToFind) { 
return (charToFind + ": " + stream.GetType() + String.Empty 
+ (stream.Position + 512M)) 
.Where(c=>c == charToFind).ToArray(); 
}
Этот немного неестественный метод содержит всего одну инструкцию на C#, 
но эта инструкция решает сразу несколько задач. Вот IL-код, сгенерированный 
компилятором C# для этого метода (места потенциальных сбоев, обусловленные 
неявно выполняемыми операциями, выделены полужирным шрифтом):
.method private hidebysig static object OneStatement( 
class [mscorlib]System.IO.Stream stream, char charToFind) cil managed { 
.maxstack 4 
.locals init ( 
[0] class Program/<>c__DisplayClass1 V_0, 
[1] object[] V_1) 
IL_0000: newobj instance void Program/<>c__DisplayClass1::.ctor() 
IL_0005: stloc.0
IL_0006: ldloc.0
IL_0007: ldarg.1
IL_0008: stfld char Program/<>c__DisplayClass1::charToFind 
IL_000d: ldc.i4.5
IL_000e: newarr [mscorlib]System.Object 
IL_0013: stloc.1
IL_0014: ldloc.1
IL_0015: ldc.i4.0
IL_0016: ldloc.0
IL_0017: ldfld char Program/<>c__DisplayClass1::charToFind 
IL_001c: box [mscorlib]System.Char
IL_0021: stelem.ref
IL_0022: ldloc.1
IL_0023: ldc.i4.1
IL_0024: ldstr ": " 
IL_0029: stelem.ref
IL_002a: ldloc.1
IL_002b: ldc.i4.2
1
Мне следовало сказать, что столь привлекательной для разработчиков платформу делают 
еще и редактор Visual Studio, механизм IntelliSense, возможность работы с фрагментами кода, 
шаблоны, расширяемость, отладчик и многое другое. Но я вынес это за пределы основного 
обсуждения, так как эти средства не влияют на поведение кода во время выполнения.


519
Продуктивность.вместо.надежности
IL_002c: ldarg.0
IL_002d:
callvirt instance class [mscorlib]System.Type [mscorlib]System.Object::GetType()
IL_0032: stelem.ref
IL_0033: ldloc.1
IL_0034: ldc.i4.3
IL_0035: ldsfld string [mscorlib]System.String::Empty 
IL_003a: stelem.ref
IL_003b: ldloc.1
IL_003c: ldc.i4.4
IL_003d: ldarg.0 

Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   371   372   373   374   375   376   377   378   ...   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