Симон Робинсон - C# для профессионалов. Том II
- Название:C# для профессионалов. Том II
- Автор:
- Жанр:
- Издательство:Лори
- Год:2003
- Город:Москва
- ISBN:5-85582-187-0
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Симон Робинсон - C# для профессионалов. Том II краткое содержание
Платформа .NET предлагает новую среду, в которой можно разрабатывать практически любое приложение, действующее под управлением Windows, а язык C# — новый язык программирования, созданный специально для работы с .NET.
В этой книге представлены все основные концепции языка C# и платформы .NET. Полностью описывается синтаксис C#, приводятся примеры построения различных типов приложений с использованием C# — создание приложений и служб Windows, приложений и служб WWW при помощи ASP.NET, а также элементов управления Windows и WWW Рассматриваются общие библиотеки классов .NET, в частности, доступ к данным с помощью ADO.NET и доступ к службе Active Directory с применением классов DirectoryServices.
Для кого предназначена эта книгаЭта книга предназначена для опытных разработчиков, возможно, имеющих опыт программирования на VB, C++ или Java, но не использовавших ранее в своей работе язык C# и платформу .NET. Программистам, применяющим современные технологии, книга даст полное представление о том, как писать программы на C# для платформы .NET.
Основные темы книги• Все особенности языка C#
• C# и объектно-ориентированное программирование
• Приложения и службы Windows
• Создание web-страниц и web-служб с помощью ASP NET
• Сборки .NET
• Доступ к данным при помощи ADO NET
• Создание распределённых приложений с помощью NET Remoting
• Интеграция с COM, COM+ и службой Active Directory
C# для профессионалов. Том II - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
С помощью мощных методов из класса Console
можно записать эквивалент класса JavaEcho
на C# следующим образом:
class CSEchoer {
static void Main(string[] args) {
string userInput = System.Console.ReadLine();
System.Console.WriteLine("You said : " + userInput);
}
}
Приведенный выше код значительно короче и легче, чем его аналог на Java. Статический метод Console.WriteLine
предоставляет одну полезную вещь, а именно, возможность использовать форматированные строки. Гибкость форматированных строк может быть проиллюстрирована написанием простой игры, где ввод пользователя применяется для создания рассказа. Код EchoGame
представлен ниже:
class EchoGame {
static void Main(string[] args) {
System.Console.WriteLine("Once upon a time in a far away" + "?");
string userInput1 = System.Console.ReadLine();
System.Console.WriteLine("a young prince ?");
string userInput2 = System.Console.ReadLine();
System.Console.WriteLine("One day while?");
string userInput3 ? System.Console.ReadLine();
System.Console.WriteLine("He came across a ?");
string userInput4 = System.ConsoleReadLine();
System.Console.WriteLine("The prince ?");
String userInput5 = System.Console.ReadLine();
System.Console.WriteLine("Once upon a time in a far away"
+ " {0}, a young prince {1}. \n One day"
+ "while {2}, He came across a (3). \n The "
+ "prince {4} ! ", userInput1, userInput2,
userInput3, userInput4, userInput5);
}
}
Точки вставки заменяются предоставленными аргументами, начиная с индекса {0}
, который соответствует самой левой переменной (в данном случае userInput1
). Можно подставлять не только строковые переменные, и не обязательно использовать только переменные или переменные одного типа. Любой тип данных, который может вывести метод WriteLine
, допустим в качестве аргумента, включая строковые литералы или реальные значения. Не существует также ограничений на число точек вставки, которые могут добавляться к строке, пока их не больше общего числа аргументов. Отметим, что исключение точек вставки из строки приведет к тому, что переменные не будут выводиться. Необходимо, однако, иметь аргумент для каждой определенной точки вставки, индекс которой в списке аргументов соответствует индексу точки вставки. В следующем листинге, например, удаление {1}
допустимо, пока имеется три аргумента. В этом случае {0}
соответствует strA
и {2}
соответствует strC
:
Console.WriteLine("hello {0} {1} {2}", strA, strB, strC);
Компиляция
При описании некоторых различий между JRE Java и CLR C# кратко упоминались некоторые детали того, как написанный на соответствующем языке код компилируется и выполняется. Хотя код обоих языков компилируется в некоторую промежуточную форму, байт-код версии Java никогда не компилируется повторно в собственные инструкции машины (если только не используется компилятор в собственный код). Вместо этого байт-код требует для выполнения среду времени выполнения, и в частности, виртуальную машину. Имя компилированного файла связано с именем файла, в котором находится исходный код, который в свою очередь связан с именем открытого класса в этом файле. В случае определения нескольких классов в одном файле каждое определение класса будет создавать файл класса, который соответствует имени определенного класса. Например, возьмем исходный файл Test.java
со следующим кодом:
// Test.java
class x {}
class у {}
class z {}
Компиляция этого файла будет создавать три файла классов: х.class
, у.class
, z.class
. Один (и только один для каждого исходного файла) из этих классов может быть объявлен открытым следующим образом:
// Test.java
public class x {}
class у {}
class z {}
В приведенном выше примере имя исходного файла Test.java
должно быть изменено, чтобы соответствовать имени находящегося в нем открытого класса. Test.java
поэтому станет х.java
, чтобы код компилировался.
В противоположность этому, компилированный в IL код C# выполняется VES (Virtual Execution System), которая предоставляет поддержку для IL, загружая управляемый код, и JITters (которые преобразуют управляемый код в форме промежуточного языка в собственный код машины). Имя файла Hello.cs
не связано с именем конечного исполняемого файла и может изменяться во время компиляции с помощью ключа /out
. Если имя файла вывода не определено, то exe получит имя того файла исходного кода, который содержит метод main
, a DLL получит имя первого указанного файла исходного кода. Фактически имя файла даже не связано с определениями любых классов, находящихся в файле. Класс Hello
может быть определен в файле Goodbу.cs
, который компилируется в несвязанный MisterHanky.exe
.
SDK .NET поставляется вместе с компилятором, поэтому не нужно беспокоиться о получении специальных компиляторов для этого приложения. Откройте просто командную строку, перейдите в каталог, где сохранен файл hello.cs
, и введите:
csc hello.cs
Файл будет компилирован в hello.exe
. Хотя большинство программистов Java знакомы с этой формой низкоуровневой компиляции, важно заметить, что Visual Studio.NET предоставляет аналогичную функциональность, интегрированную в IDE. Например, изменение имени исполнимого файла можно легко выполнить, добавляя свойство имени сборки страницы свойств проекта. Чтобы сделать это производим щелчок правой кнопкой мыши на имени проекта в панели Solution Explorer и выбираем Properties или указываем Project в меню, в то время, когда имя проекта выделено, и выбираем пункт меню Properties. В папке Common Properties можно выбрать страницу General Properties и изменить свойство Assembly Name. Можно будет увидеть, что свойство для чтения Output File изменяется, отражая новое имя сборки.
Все файлы Java компилируются в файл байт-кода с расширением .class
, который может выполниться виртуальной машиной. Внутри первого исходного кода необходимо предоставить соответствующую. Функциональность для создания того или иного типа приложения. Например, определенный ниже код будет создавать окно, аналогичное Form
в Windows. Второй исходный файл AddLib.java
является вспомогательным классом, используемым для выполнения сложения двух целых чисел. Можно заметить, что они включены в отдельные пакеты и JavaFrame
импортирует класс AddLib
. Пакеты и их эквивалент C# будут рассмотрены в следующем разделе:
// код для JavaFrame.java
Package com.javaapp;
import java.awt.*;
import java.io.*;
import com.javalib.AddLib;
public class JavaFrame extends java.awt.Frame {
public static void main (String[] args) {
JavaFrame jfrm = new JavaFrame();
jfrm.setSize(100, 100);
jfrm.setVisible(true);
AddLib lib = new AddLib();
jfrm setTitle("Frame Version " + lib.operationAdd(12, 23));
}
}
// код для AddLib.java
Package com.javalib;
public class AddLib {
Интервал:
Закладка: