- Фантастика и фэнтези
- Ироническое фэнтези
- Стимпанк
- Детективная фантастика
- Киберпанк
- Попаданцы
- LitRPG
- Космоопера
- Технофэнтези
- Городская фантастика
- Русское фэнтези
- Юмористическая фантастика
- Космическая фантастика
- Боевое фэнтези
- Эпическая фантастика
- Зарубежная фантастика
- Книги магов
- Мистика
- Разная фантастика
- Разное фэнтези
- Любовное фэнтези
- Романтическая фантастика
- Городское фентези
- Историческая фантастика
- Историческое фэнтези
- Социально-философская фантастика
- Сказочная фантастика
- Иностранное фэнтези
- Романтическое фэнтези
- Ироническая фантастика
- Ужасы и Мистика
- Постапокалипсис
- Героическая фантастика
- Фэнтези
- Научная Фантастика
- Социально-психологическая
- Альтернативная история
- Боевая фантастика
- Разная литература
- Пословицы, поговорки
- Шахматы
- Визуальные искусства
- Фанфик
- Авто и ПДД
- Военное
- Отраслевые издания
- Гиды, путеводители
- Зарубежная образовательная литература
- Военная история
- Цитаты из афоризмов
- Современная литература
- Великолепные истории
- Начинающие авторы
- Современная зарубежная литература
- Боевые искусства
- Изобразительное искусство, фотография
- Кино
- Литература 19 века
- Недвижимость
- Музыка, музыканты
- Готические новеллы
- Истории из жизни
- Культура и искусство
- Спецслужбы
- Зарубежная прикладная литература
- Музыка, танцы
- Подростковая литература
- Прочее
- Военная техника, оружие
- Газеты и журналы
- Периодические издания
- Домоводство, Дом и семья
- Любовные романы
- Экономическая литература
- Научные и научно-популярные книги
- О животных
- Биохимия
- Культурология
- Юриспруденция
- Политика
- Психотерапия
- Языкознание
- Научпоп
- Медицина
- Психология, личное
- Радиотехника
- Филология
- Педагогика
- Образовательная литература
- Деловая литература
- Физика
- Науки: разное
- Химия
- Воспитание детей, педагогика
- Детская психология
- Зарубежная публицистика
- Биология
- Архитектура
- Зарубежная психология
- Науки о космосе
- Социология
- Математика
- География
- Беременность, ожидание детей
- Литературоведение
- Транспорт, военная техника
- Обществознание
- Зоология
- География
- Альтернативная медицина
- Иностранные языки
- Ветеринария
- Рефераты
- Астрология
- Биофизика
- Экология
- История Европы
- Учебники
- Шпаргалки
- Государство и право
- Ботаника
- Религиоведение
- История
- Техническая литература
- Прочая научная литература
- Психология
- Детективы и Триллеры
- Справочная литература
- Проза
- Новелла
- Юмор
- Проза
- Историческая проза
- Русская современная проза
- Советская классическая проза
- Повести
- Очерки
- Эссе
- Рассказы
- Зарубежная современная проза
- Сентиментальная проза
- Зарубежная классика
- Афоризмы
- Эпистолярная проза
- Феерия
- Семейный роман/Семейная сага
- Разное
- Антисоветская литература
- Магический реализм
- Русская классическая проза
- Современная проза
- О войне
- Контркультура
- Классическая проза
- Поэзия, Драматургия
- Детская литература
- Детская фантастика
- Детские остросюжетные
- Детские стихи
- Детские приключения
- Внеклассное чтение
- Учебная литература
- Зарубежные детские книги
- Бизнес
- Загадки
- Книги для подростков
- Школьные учебники
- Детский фольклор
- Книги для дошкольников
- Детские детективы
- Детская познавательная и развивающая литература
- Буквари
- Прочая детская литература
- Сказка
- Детская проза
- Детская образовательная литература
- Юмор
- Документальные книги
- Бизнес
- Внешнеэкономическая деятельность
- Тайм-менеджмент
- Кадровый менеджмент
- О бизнесе популярно
- Управление, подбор персонала
- Бизнес
- Менеджмент и кадры
- Продажи
- Экономика
- Ценные бумаги и инвестиции
- Малый бизнес
- Делопроизводство, офис
- Корпоративная культура, бизнес
- Банковское дело
- Финансы
- Зарубежная деловая литература
- Ораторское искусство / риторика
- Личные финансы
- Интернет-бизнес
- Поиск работы
- Государственное и муниципальное управление
- Бухучет и аудит
- Работа с клиентами
- Менеджмент
- Краткое содержание
- Личная эффективность
- Переговоры
- Приключения
- Старинная литература
- Религия и духовность
- Компьютеры и Интернет
- Блог
Читаем без скачивания C# для профессионалов. Том II - Симон Робинсон
Шрифт:
Интервал:
Закладка:
private System.ComponentModel.Container components;
public SquareRootForm() {
InitializeComponent();
}
public override void Dispose() {
base.Dispose();
if(components != null) components.Dispose();
}
#region Windows Form Designer generated code
/// <summary>
/// Требуемый для поддержки Designer метод - не изменять
/// содержимое этого метода с помощью редактора кода.
/// </summary>
private void InitializeComponent() {
this.txtNumber = new System.Windows.Forms.TextBox();
this.txtSign = new System.Windows.Forms.TextBox();
this.cmdShowResults = new System.Windows.Forms.Button();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.txtResult = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// txtNumber
//
this.txtNumber.Location = new System.Drawing.Point(160, 24);
this.txtNumber.Name = "txtNumber";
this.txtNumber.TabIndex = 0;
this.txtNumber.Text = "";
//
// txtSign
//
this.txtSign.Enabled = false;
this.txtSign.Location = new System.Drawing.Point(160, 136);
this.txtSign.Name = "txtSign";
this.tхtSign.TabIndех = 1;
this.txtSign.Text = "";
//
// cmdShowResults
//
this.cmdShowResults.Location = new System.Drawing.Point(24, 96);
this.cmdShowResults.Name = "cmdShowResults";
this.cmdShowResults.Size = new System.Drawing.Size(88, 23);
this.cmdShowResults.TabIndex = 3;
this.cmdShowResults.Text = "Show Results";
this.cmdShowResults.Click +=
new System.EventHandler(this.OnClickShowResults);
//
// label3
//
this.label3.Location = new System.Drawing.Point(72, 24);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(80, 23);
this.label3.TabIndex = 6;
this.label3.Text = "Input a number";
//
// label4
//
this.label4.Location = new System.Drawing.Point(80, 184);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(80, 16);
this.label4.TabIndex = 7;
this.label4.Text = "Square root is";
//
// label1
//
this.label1.Location = new System.Drawing.Point(112, 136);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(40, 23);
this.label1.TabIndex = 4;
this.label1.Text = "Sign is";
//
// label2
//
this.label2.Location = new System.Drawing.Point(48, 184);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(8, 8);
this.label2.TabIndex = 5;
//
// txtResult
//
this.txtResult.Enabled = false;
this.txtResult.Location = new System.Drawing.Point(160, 184);
this.txtResult.Name = "txtResult";
this.txtResult.TabIndex = 2;
this.txtResult.Text = "";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 269);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.label4, this.label3, this.label2, this.label1,
this.cmdShowResults, this.txtResult, this.txtSign, this.txtNumber
});
this.Name = "Form1";
this.Text = "Square Root C# Sample";
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// Обработчик событий для нажатия пользователем кнопки Show Results
/// Выводит квадратный корень и знак числа
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnClickShowResults(object sender, System.EventArgs e) {
float NumberInput = float.Parse(this.txtNumber.Text);
if (NumberInput < 0) {
this.txtSign.Text = "Negative";
this.txtResult.Text = Math.Sqrt(-NumberInput) + " i";
} else if (NumberInput == 0) {
txtSign.Text = "Zero";
txtResult.Text = "0";
} else {
this.txtSign.Text = "Positive";
this.txtResult.Text = Math.Sqrt(NumberInput).ToString();
}
}
}
class MainEntryClass {
/// <summary>
/// Основная точка входа приложения.
/// </summary>
[STAThread]
static void Main() {
SquareRootForm TheMainForm = new SquareRootForm();
Application.Run(TheMainForm);
}
}
}
Пространства имен
Основная часть исходного кода SquareRoot на C# начинается с объявлений пространств имен и класса:
namespace Wrox.ProfessionalCSharp.AppendixC.SquareRootForm {
public class SquareRootForm : System.Windows.Forms.Form {
Класс SquareRootForm будет содержать почти весь код — все методы и т.д. с небольшим объемом кода, находящимся в классе с именем MainEntryClass. Помните что легче всего здесь представлять класс как объект класса VB, хотя есть одно различие, состоящее в том, что реально виден исходный код, который начинается с объявления класса. В VB среда разработки — это просто отдельное окно, содержащее код класса.
Пространство имен не имеет аналогии в VB и проще всего представить его как способ организации имен классов таким образом, как файловая система организует имена файлов. Например, почти наверняка на жестком диске имеется большое количество файлов, которые имеют имя ReadMe.txt. Если бы это имя было единственной информацией о каждом файле, то невозможно было бы различить все эти файлы. Но есть полные имена доступа, например, C:Program FilesReadMe.txt и G:Program FilesHTML Help WorkshopReadMe.txt.
Пространства имен работают так же, но без дополнительных расходов, связанных с созданием реальной файловой системы — они являются по сути не более чем метками. Формально не требуется ничего делать, чтобы создать пространство имен, кроме просто объявления его в коде таким способом, как было сделано в примере выше. Код, представленный в нем, означает, что полное имя класса, который был определен, будет не SquareRootForm, a Wrox.ProfessionalCSharp.AppendixC.SquareRootForm. Крайне маловероятно, что кто-то будет записывать класс с этим полным именем. С другой стороны, если бы не было пространства имен, то существовал бы большой риск путаницы, так как кто-нибудь еще мог бы написать класс с именем SquareRootForm.
Исключение конфликтов такого рода важно в C#, так как рабочая среда .NET использует только эти имена для идентификации классов, в то время как элементы управления ActiveX, созданные VB, применяют для ухода от конфликтов имен сложный механизм, включающий GUID. Компания Microsoft предпочла более простую концепцию пространств имен в связи с опасениями, что некоторые сложности COM, такие как GUID, сделают неоправданно трудным для разработчиков создание хороших приложений Windows.
Хотя в C# пространства имен и не являются строго обязательными, настоятельно рекомендуется все классы помещать в пространство имен, чтобы предотвратить любые возможные конфликты имен с другим программным обеспечением. Фактически крайне редко можно увидеть код C#, который не начинается с объявления пространства имен.
Пространства имен могут быть вложенными. Например, приведенный выше код пространства имен:
namespace Wrox.ProfessionalCSharp.AppendixC.SquareRootSample {
public class SquareRootForm : System.Windows.Forms.Form {
// и т.д.
}
}
можно было бы записать следующим образом:
namespace Wrox {
namespace ProfessionalCSharp {
namespace AppendixC {
namespace SquareRootSample {
public class SquareRootForm : System.Windows.Forms.Form {
// и т.д.
}
}
}
}
}
В этом коде добавлены закрывающие фигурные скобки, просто чтобы подчеркнуть, что они всегда должны соответствовать открывающим. Фигурные скобки используются для отметки границ пространств имен и классов так же, как они используются для отметки границ методов и составных инструкций.
Инструкция using
Конечная часть приведенного выше кода, который начинает проект SquareRoot, состоит из инструкций using:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace Wrox.ProfessionalCSharp.AppendixC.SquareRootSample {
Эти инструкции using присутствуют здесь, чтобы упростить код. Полные имена классов, включающие имена пространств имен, будут длинными. Например, позже в этом коде определяется пара текстовых полей. Текстовое поле представляется классом System.Windows.Forms.TextBox. Если писать это в коде каждый раз при ссылке на Text Box, код будет выглядеть очень загроможденным. Вместо этого инструкция using System.Windows.Forms; дает задание компилятору найти в этом пространстве имен все классы, которые отсутствуют в текущем пространстве имен и для которых не определено пространство имен. Теперь можно просто писать TextBox везде, где необходимо сослаться на этот класс. Обычно любая программа на C# начинается с ряда инструкций using, вводящих все пространства имен, которые будут использоваться в множество пространств имен, просматриваемых компилятором. Пространства имен, определенные в приведенном выше коде охватывают различные части библиотеки базовых классов .NET, и поэтому позволяют, что очень удобно, использовать различные базовые классы .NET.