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

 

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

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

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 18 19 20 21 22 23 < 24 > 25 26 27 28 29 30 .. 320 >> Следующая

// С пространствами ииен ны познакомимся чуть ниже в этой главе
namespace Ca 1 culator
{
using System;
Il В классе Calculator определен нетод AddO, а также точка входа // приложения - нетод MainO
public class CalC {
Il Конструктор по умолчанию
public CaIcOU
public int AddC: їй x. int y) {
return x + y:
I
public static int наігїіглгігди args) {
// Создаем объект CaIc и складываем два числа CaIc с = new CaIcC); int ans = с. Add С10, 84): .Console.WnteLineC'lQ + 84 is (0).". ans): return 0:
}
J
}
Послетого как этот исходный файл будет обработан компилятором С# (csc.exe), в нашем распоряжении окажется исполняемый файл С# - сборка из одного файла. Внутри этого файла можно будет обнаружить манифест, инструкции IL и метаданные, описывающие класс Calc. Если мы заглянем внутрь этой сборки (с помощью чего — об этом мы скажем ближе к концу этой главы), то помимо всего прочего мы сможем найти следующий блок инструкций IL, относящихся к методу AddC):
Роль Microsoft Intermediate Language 39
method public hidebysig instance int32 Add(int32 x, intS« y) jl manag«!
{
Il Разкер кода 8 (0x8) ,maxstack. 2
.locals ([0] int32 VJ) ILJOOO: ldarg.1 ILJOOl: ldarg.2 ILJIM)?: add ILJ003: stloc,0 ILJ0Q4. br.s ILJ0O6 1LJ006: Idloc.D ILJD07: ret } // Конец" кода IL для метода Calc:Add()
Если большая часть строк в коде IL осталась для вас загадкой, не волнуйтесь.. Код IL будет рассмотрен более подробно в главе 7. Пока самое важное - отметить, что компилятор С# генерирует не платформенно-зависимый набор инструкций, а код IL. То же самое справедливо и для других компиляторов .NET. Давайте создадим наш калькулятор на языке Visual Basic.NET:
' Калькулятор VB.NET Module Modulel
' Опять-таки, в классе CaIc определен нетод AddO
' и точка входа для приложения
Class Calc
Public Function AdCi(ByVaI х As Integer, ByVaI у As Integer) As Integer ' Да! Теперь Visual Basic поддериивает ключевое слово 'return'
Return X + у End function
End
Sub MainO
Dim ans As Integer Dim с As New CaIcO ¦ans = c.AdddO, 84)
Console.UriteLlneCTO + 84 is {O).", ans)
End Sub End Module
Если мы поищем внутри сборки относящийся к методу ArIrK то мы сможем обнаружить следующее:
,TiaihDS public instance int32 Add(int32 x, Ш32 y) il managed {
II Размер кода 11 (Oxb) .maxstack 2
.locals init ([0] int32 Add) ILJOOO: nop ILJOOl: ldarg.1 ILJ002: ldarg.2 ILJ003: add.ovf ILJ004: stloc.O ILJ005: nop ILJ0Q6; br.s 1LJQ08 ILJ008:nop IL 0009: ldloc.0 IL 000a: ret 1 // Конец
40 Глава 1 * Философия .NET
Как мы видим, получившийся код IL практически идентичен. Незначительные отличия возникают вследствие особенностей компиляторов С# и Visual Basic.NET.
Код приложений CSharpCalculatorn VBCalculator можно найти в подкаталоге Chapter 1.
l"
Преимущества IL
Возможно, к этому времени у вас уже созрел вопрос - а в чем, собственно, вообще могут состоять преимущества LL перед обычным набором платформенно-зависи-мых инструкций? Одно из преимуществ, про которое мы уже говорили, — возможность полного межъязыкового взаимодействия. Поскольку любой код на любом языке программирования .NET компилируется в стандартный набор инструкций IL, проблем во взаимодействии между блоками кода IL не будет. При этом взаимодействие будет производиться, как и положено, на двоичном уровне.
Еще одно возможное преимущество — потенциальная независимость от компьютерной платформы. Существует большая вероятность, что среда выполнения .NET будет распространена на самые разные компьютерные платформы и операционные системы (отличные от Windows). В результате .NET может пойти по стопам Java -то есть с помощью языков .NET можно будет создавать программы, которые будут работать под самыми разными операционными системами (и при этом в отличие от Java еще и пользоваться преимуществами языковой независимости!) Таким образом, .NET потенциально позволяет создавать приложения на любам языке, которые будут работать на любой платформе и поя любой операционной системой.
Однако в отношении межплатформенности пока ключевое слово - «потенциально». На момент создания этой книги Microsoft официально не произнесла ни слова относительно возможности среды выполнения под дру-
гие операционные системы. Поэтому пока мы будем считать, что приложения .NET работают только под Windows.
Роль метаданных
Программистам, работающим с СОМ, хорошо знакома концепция Interface Definition Language (IDE, языка определения интерфейсов). IDL - это «метаязык», который позволяет, исключив любую двусмысленность, описать типы, используемые внутри сервера COM. IDL компилируется в двоичный формат (называемый библиотекой типов) с использованием компилятора midL.exe. Этот компилятор может использоваться любым языком, предназначенным для работы с СОМ.
IDL полностью описывает все типы данных, используемые в двоичном файле СОМ, но информация о самом этом двоичном файле в нем минимальна. Фактически она ограничивается номером версии (к примеру, 1.0,2.0 или 2.4) и информацией о локализации (например, English, German, Russian). Кроме того, наличие или отсутствие метаданных (и их полноту) должен вручную контролировать создающий сервер СОМ программист — таким образом, необходимых метаданных в двоичном файле СОМ может вообще не оказаться.
Предыдущая << 1 .. 18 19 20 21 22 23 < 24 > 25 26 27 28 29 30 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100