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

 

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

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

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

Console.WnteUne("c2.intX - {0}\nc2.intY - {l}\n'. c2.intX. c2.intY);
// Ay! He забыли ли мы удалить кое-какие сбьекты? return 0:
:
Ничего ужасного не произошло. Напротив, в ,NET так и надо поступать. В С#, как и в Visual Basic, и в Java, программистам не надо думать о явном удалении объектов и освобождении памяти - сборщик мусора .NET освободит память автоматически. Поэтому в С# нет даже зарезервированного слова delete. Подробнее о работе сборщика мусора .NET будет рассказано в следующей главе.
Основы языка С#
// Приненяем конструктор по умолчанию HelloClass cl - new HelloClassO;
Console. Wri teLi net "cl. 1 ntX = {0}\ncl.intY - {l)\n". cl.1n.tX, cl.intY);
Il Прииеняен конструктор с параметрами
HelloClass с2 - new HelloClass(100 , 2 0 0);
Console.WriteLine("c2.intX = {0}\nc2.1ntY - {1}\п", c2.1ntX, c2.intY); return
Композиция приложения 31
Композиция приложения С#
Наш класс HelloC1 ass выполняет две основные функции: во-первых, он обеспечивает точку входа для приложения, а во-вторых, он содержит в себе две переменные-члены класса и два перегруженных конструктора. Несмотря на то что все работает просто замечательно, может показаться странным, что метод Main() создает экземпляр того самого класса, в котором он определен:
class HelloClass {
public HelloClassC){ Consolе.WriteLineC"Default ctor called!"); }
public HelloClass x. int y)
{
Console.WriteLine ("Custom ctor called!"): intX - x; intY - y:
}
int intX.
public static int args)
{
II Создаем объекты HelloClass...
HelloClass cl - new HelloClassO:
}
)
Этот подход уже несколько раз использовался в наших примерах и будет использован еще неоднократно. Однако при создании реальных приложений правильно использовать другой подход, а именно разбить класс HeI 1 oCl ass на два отдельных класса: HelloClass и HelloApp. В терминах объектно-ориентированнсго программирования такой принцип получил название «разделения интересов» (separation of concerns). Следуя ему, мы можем преобразовать наше приложение следующим образом (обратите внимание, что в HelloClass появился новый метод):
class HelloClass {
public HelloClass(){ Console.WriteLine("Default ctor called!"): }
public HelloClass (1nt x, 1nty)
{
Console.WriteLine ("Custom ctor called!"); intX - x; intY - y;
}
public int intX. intY; II Новая функция-член
public void SayHiO {Console.WriteLine("Hi there!");}
}
class HelloApp {
public static int Main{string[] args) {
Il Создаем объекты HelloClass и выводим приветствие HelloClass cl = new HelloClassO;
82 Глава 2 * Основы языка
Cl.SayHi С):
)
}
При создании приложений принято использовать схему, в которой один класс (класс приложения) представляет объект приложения, помимо всего прочего, обеспечивая точку входа для этого приложения, а логика выполнения различных операций заключена в других классах. При этом обычно для каждого класса используется отдельный файл *,cs (что может сильно облегчить повторное использование вашего кода). В приложениях-примерах в нашей книге мы будем использовать оба подхода.
Код приложения [-[elloTliere можно найти в подкаталоге Chapter 2.
Инициализация членов
Иногда для класса может быть предусмотрено множество конструкторов. При этом может возникнуть такая когда вам придется при создании класса ини-
циализировать переменные, присваивая им одни и те же значения вне зависимости от того, какой именно конструктор вызывается. Если эти значения отличны от значений по умолчанию, то записывать одинаковые строки инициализации менных в каждый вариант конструктора — значит, делать много лишней работы.
С# избавляет вас от нее. В нем вы можете инициализировать переменные прямо в момент их объявления:
Text
{
private int Mylnt - 90;
private string MyString = "My initial value";
private HotRod viper = new HotRod (200, "Chucky". Color.Red);
}
Другие объектно-ориентированные языки, такие как не позволяют инициализировать члены классов таким способом. Конечно, программисты нашли выходы из этой ситуации. Например, можно создать свою маленькую вспомогательную функцию, присваивающую переменным нужные значения, и затем вызывать эту функцию из каждого кшlei рукторл. Еще один возможный подход — передавать вызовы от каждого из вариантов конструктора «главному» конструктору (мы будем подробнее говорить об этом в главе 3 при обсуждении зарезервированного слова thi s). Все эти подходы, конечно же, можно использовать и в С#, но возможность присваивать значения переменным прямо при их объявлении, по крайней мере, не менее удобна.
Ввод и вывод с использованием класса Console
В большинстве созданных нами приложений использовался класс System.Console -один из многих классов, определенных внутри пространства имен Как уже
можно было заметить, этот класс предназначен для работы с вводом и выводом (в том числе сообщений об ошибках) с использованием системной консоли (которую иногда также называют командной строкой). Вы вряд ли ошибетесь, если предположите, что этот класс чаще всего используется в консольных приложениях
Предыдущая << 1 .. 34 35 36 37 38 39 < 40 > 41 42 43 44 45 46 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100