Основы C# 49
разделено точками с запятой. Именно по ним компилятор будет отделять отдель-
ные операции.
Несмотря на то, что этот код вполне корректен, никогда не пишите так. Если строка
кода слишком большая, то ее можно разбить на части, но писать в одной строке два
действия не нужно. Строка получится перегруженной информацией и сложной для
чтения.
Для объявления переменной i мы использовали псевдоним int. Полное название
типа — System.Int32, и никто не запрещает использовать его:
System.Int32 i;
i = 10;
Console.WriteLine(i);
Результат будет тем же самым. Но большинству программистов просто лень писать
такое длинное определение типа. Я думаю, что вы тоже будете лениться, ведь три
буквы int намного проще написать, чем длинное определение System.Int32.
ВНИМАНИЕ!
Язык С# чувствителен к регистру букв. Это значит, что переменная i и перемен-
ная I — совершенно разные переменные. То же самое и с операторами языка — если
тип называется int, то нельзя его писать большими буквами INT или с большой буквы
Int. Вы должны четко соблюдать регистр букв, иначе компилятор выдаст ошибку.
Если нужно объявить несколько переменных одного и того же типа, то их можно
записать через запятую, например:
int i, j;
Здесь объявляются две целочисленные переменные с именами i и j.
Теперь посмотрим, как определяются строки. Следующий пример объявляет стро-
ку s, присваивает ей значение и выводит содержимое на экран:
System.String s;
s = "Hello";
Console.WriteLine(s);
Объявление строк происходит так же, как и целочисленных переменных. Разница
в присвоении значения. Значение строки должно быть заключено в двойные кавыч-
ки, которые указывают на то, что это текст.
Присваивать значение переменной можно сразу же во время объявления, например:
int i = 10;
В этом примере объявляется переменная и тут же ей назначается значение.
Ставить пробелы вокруг знака равенства не обязательно, и строку можно было на-
писать так:
int i=10;
Но этот код, опять же, выглядит не слишком красиво. Помните, что красота — это
не только баловство, это еще и удобство. Кто-то очень умный как-то сказал, что мы
50 Глава 2
пишем код только один раз, а читаем потом мнократно. Возможно я сейчас привел
это высказыванием не дословно, но смысл точно был таким.
Из личного опыта могу сказать, что чаще всего мне приходится работать с целыми
числами и типом данных int. Но я также очень часто пишу экономические и бух-
галтерские программы, а вот тут уже нужна более высокая точность данных, где
участвует запятая, — используются вещественные или дробные числа. Для хране-
ния дробных чисел в .NET чаще всего используют тип данных double, потому что
его размера вполне достаточно. В коде программы дробная часть записывается вне
зависимости от региональных настроек через точку:
double d = 1.2;
В этой строке кода объявляется переменная d, которой сразу же присваивается зна-
чение одна целая и две десятых.
А вот когда вы запустите программу и попросите пользователя ввести данные, то
он должен будет вводить их в соответствии с установленными в операционной сис-
теме региональными настройками.
Что произойдет, если попытаться присвоить значение одной переменной другой
переменной? Мы уже знаем, что переменная — это имя какого-то участка памяти.
Когда мы присваиваем значение одной переменной другой переменной, будут ли
обе переменные указывать на одну память? Это зависит от ряда условий. Так, для
простых типов (строка, число и т. п.) при присвоении копируется значение. Каждая
переменная является именем своего участка памяти, и при присвоении одно значе-
ние из своего участка памяти копируется в участок памяти другого. Но это не каса-
ется ссылочных типов, где копируется ссылка, и обе переменные начинают ссы-
латься на один и тот же объект в памяти.
Переменные мы будем использовать очень часто и в большинстве примеров,
поэтому тема работы с ними останется с вами надолго.
Рассмотрим простую, но очень полезную задачку на работу с переменными. Допус-
тим, что у нас есть две переменные:
string firstname = "Фленов";
string lastname = " Михаил";
Кто-то явно ошибся и в переменную для имени поместил фамилию, а в перемен-
ную для фамилии попало имя. Как поменять эти две переменные местами? Если мы
попытаемся скопировать фамилию в имя:
firstname = lastname;
то тогда в обеих переменных будет Михаил. Мы просто затерли имя и потеряли дан-
ные. Вместо этого надо завести еще одну переменную:
// скопировали Фленов из firstname в temp
string temp = firstname; // в temp теперь Фленов
firstname = lastname; // копируем Михаил в firstname
lastname = temp; // копируем из temp переменной фамилию
Заключение
В этой книге я постарался заинтересовать вас программированием для платформы
.NET с использованием языка C#. Надеюсь, что мне это удалось, и я смог дать вам
исходную базу для самостоятельного улучшения знаний. Я не пытался повторить
официальную документацию или другие книги. Моей целью было предоставить
вам такие сведения, которые станут основой для использования других источников
информации.
В сопровождающем книгу электронном архиве (см. приложение) вы найдете мно-
жество дополнительной документации по программированию и не только для
.NET. Помимо сведений о программировании я выложил там достаточно много ин-
формации и по Microsoft SQL Server, что будет полезно тем, кто собирается связать
свою жизнь с миром баз данных.
Нет ничего идеального, и если вы нашли в книге ошибку, то просьба сообщить мне
об этом через мой сайт www.flenov.info. Буду рад увидеть любые замечания и ком-
ментарии по этой книге.
Список литературы
1. Агуров П. C#. Разработка компонентов в MS Visual Studio 2005/2008. — СПб.:
БХВ-Петербург, 2008. — 480 с.
2. Нортроп Т. Разработка защищенных приложений на Visual Basic .NET и Visual
C# .NET. Учебный курс Microsoft. — СПб.: БХВ-Петербург, 2007. — 688 с.
3. Фленов М. Transact-SQL. — СПб.: БХВ-Петербург, 2006. — 550 с.
4. Фленов М. Компьютер глазами хакера. — 3-е изд. — СПб.: БХВ-Петербург,
2012. — 272 с.
5. Фленов М. Программирование на С++ глазами хакера. — 2-е изд. — СПб.: БХВ-
Петербург, 2009. — 320 с.
6. www.codeplex.com — сайт для проектов с открытым исходным кодом от компа-
нии Microsoft.
7. www.codeproject.com — один из самых старых сайтов по языкам С и С++. Со-
держит также большой раздел по .NET-технологиям, где можно найти статьи и
примеры с исходными кодами по различным темам.
8. www.flenov.info — мой сайт, на котором можно найти статьи и заметки о про-
граммировании и не только.
9. www.msdn.com — классический ресурс любого программиста .NET. Лично я
уже не устанавливаю файлы помощи на свой компьютер, потому что они отни-
мают слишком много места, а все свежее и полезное всегда доступно онлайн
в MSDN.
ПРИЛОЖЕНИЕ
Описание электронного архива,
сопровождающего книгу
Электронный архив с этой информацией можно скачать по ссылке ftp://ftp.bhv.ru/
9785977568272.zip или со страницы книги на сайте издательства https://bhv.ru/.
Папки Описание
\Documents
Дополнительная документация по программированию .NET,
\Source по среде разработки Visual Studio и по базам данных
Исходные коды программ из книги
Предметный указатель
. J
.NET 19 JIT-компиляция 20
.NET Core 18, 29, 30, 33, 35, 39
.NET Framework 17, 18, 30, 32, 33, 35 L
A LINQ (Language Integrated Query,
интегрированные в язык запросы) 178,
as, приведение типов 135 248–257
B M
base, обращение к предку 129 Main(), главный метод 111
C P
CLR (Common Language Runtime, среда PDB-файл 28
выполнения) 17, 18
S
CTS, общая система типов 42
stackalloc, выделение памяти 392
D static, ключевое слово 103
DllImport, атрибут 395 T
G this, обращение к текущему объекту 100
GAC, глобальный кэш сборок 35 U
H unsafe, небезопасный код 388
HTTP-клиент 429 V
I virtual, ключевое слово 126
Visual Studio: переменная среды окружения
IL-код 19
is, проверка класса 135 32
Предметный указатель 461
А ◊ Enum 156
◊ EventArgs 237
Аксессоры 85 ◊ Exception 220
◊ FileStream 264
Б ◊ Hashtable 212
◊ MemoryStream 277
Базы данных 397 ◊ Monitor 296
◊ транзакции 416 ◊ Object 124
Библиотека Dapper 424
Библиотеки 420 Equals() 127
ToString() 126
Д ◊ OleDbCommand 409
◊ OleDBConnection 399
Делегаты 236 ◊ OleDbTransaction 417
Деструктор 109 ◊ Queue 210
Домены приложений 299 ◊ Socket 440
◊ Stack 211
З ◊ Stream 276
◊ StreamReader 263
Запросы 248, 249, 251 ◊ StreamWriter 262
Значимые типы 380 ◊ String 165
◊ Thread 290
И ◊ TimeSpan 162
◊ Uri 433
Интерфейс 181 ◊ WebBrowser 446
◊ IComparable 206 ◊ WebProxy 432
◊ IComparer 208 ◊ WebRequest 430
◊ IEnumerable 203 ◊ XmlTextWriter 268
◊ наследование 190 ◊ абстрактный 137
Исключения 220 ◊ методы 89
◊ throw 226 ◊ модификаторы доступа 83
◊ блок ◊ псевдоним 114
◊ свойства 84
catch 224 Комментарии 40
finally 231 ◊ многострочные 41
try 223 Компиляция 30
◊ переполнение 232 ◊ JIT- 20
Константы 77
К Конструктор 99
Куча 381, 383
Класс 81
◊ AppDomain 300 М
◊ Array 194
◊ ArrayList 198 Массивы 52, 194
◊ Console 143 ◊ динамические 198
◊ индексатор 201
метод Read() 150 ◊ невыровненные 196
метод ReadLine() 150 ◊ нумерация 54
метод Write() 149 ◊ типизированные 213
метод WriteLine() 147 Методы 89
◊ Convert 153 ◊ анонимные 246
◊ DateTime 162 ◊ контроллера 331
462 Предметный указатель
Методы (прод.) ◊ метаданные 20
◊ параметр ◊ приватная 36, 427
◊ разделяемая 36
out 96 Сборщик мусора 382
params 97 Свойства 84
ref 95 ◊ аксессоры 85
◊ перегрузка 98 Сериализация 278
◊ переопределение Синтаксис программирования Razor 341
new 127 События 237
override 126 ◊ делегаты 236
◊ синхронные и асинхронные вызовы 245
О Создание представлений 335
Сокеты 435
Область видимости 131 Ссылочные типы 380
Общеязыковая среда выполнения (Common Структуры 159, 380
Language Runtime, CLR) 17, 380 Т
Объект 122
Оператор Типы данных
◊ break 75 ◊ var 135
◊ continue 76 ◊ объектные 42
◊ if 64 ◊ ссылочные 42
◊ switch 67
◊ typeof 157 У
◊ using 113
◊ yield 209 Указатели 389
◊ перегрузка 168 ◊ fixed, ключевое слово 393
Упаковка (boxing) 382
П Утечка памяти 387
Утилита
Переменные 41 ◊ csc.exe 32
Перечисление 155 ◊ ildasm.exe 38
◊ ConsoleColor 143
◊ enum 56 Ф
Потоки 289
◊ ввода/вывода 275 Функции Windows API 394
Преобразование типов 152
Приложение: консольное 142 Ц
Приложения MVC 310
Проект 21 Цикл
Прокси-сервер 432 ◊ do..while 73
Пространства имен 113 ◊ for 69
Пул потоков 297 ◊ foreach 73
◊ while 72
Р
Ш
Распаковка (unboxing) 382
Рефлектор 250 Шаблон MVC (Model-View-Controller,
Решение 21 Модель-Представление-Контроллер) 323
С Шаблоны 173
Сборка 19
◊ версия 36
Умрихин Е.
www.bhv.ru Разработка Android-приложений на С#
с использованием Xamarin с нуля
Отдел оптовых поставок:
e-mail: [email protected]
Создавай мобильные приложения с Xamarin!
Вы узнаете, как:
• использовать интегрированную среду
разработки IDE
• работать с Activity
• выбирать и использовать управляющие
элементы
• записывать и считывать данные
• взаимодействовать с веб-сервисами
и средствами коммуникаций
• собирать написанные на С# мобильные
приложения
• публиковать приложения в Google Play
Язык программирования C# — одно из самых популярных средств разработки.
Многие уже владеют приемами программирования на базе технологий Microsoft,
и эти навыки можно с успехом использовать при создании мобильных приложений
для платформы Android. Изучение платформы Xamarin.Android дает возможность
внедрять и развивать свои мобильные сервисы с использованием технологического
стека Microsoft.
Книга будет полезна всем, кто знаком с программированием на C# или только изу-
чает этот язык и интересуется мобильной разработкой, но пока еще не решается
приступить к написанию своей первой программы. Читатель получит опыт созда-
ния нативных приложений для самой популярной мобильной платформы. Каждая
тема сопровождается наглядными примерами, дающими необходимые представле-
ния об используемой технологии.
Умрихин Евгений Дмитриевич, кандидат технических наук, инженер-программист в круп-
ной региональной страховой компании. Имеет многолетний опыт разработки и внедрения
распределенных IT-решений с использованием веб-сервисов ASP.NET и мобильных плат-
форм Android и iOS. Обладатель ряда авторских свидетельств об официальной регистрации
программ для ЭВМ.
www.bhv.ru Шлее М.
Qt 5.10. Профессиональное программирование
на C++
Отдел оптовых поставок:
e-mail: [email protected]
Платформно-независимая реализация приложений —
это уже сегодняшний и завтрашний день программной индустрии.
И эта книга станет вашим путеводителем в будущее.
• Кроссплатформенная реализация приложений
для Windows, Mac OS X и Linux
• Разработка мобильных приложений для Android
и iOS
• Программирование 2D- и 3D-графики,
мультимедиа, веб-приложений, баз данных,
сети, таймера, многопоточности, XML, QML
и JavaScript
• 240 завершенных программ
Книга подробно знакомит с библиотекой Qt 5.10,
являющейся не только средством для создания
пользовательских интерфейсов, но и позволяющей
разрабатывать приложения практически любой
сложности. Недаром Qt широко используется мно-
гими организациями и компаниями, такими как ADOBE, AMAZON, AMD, BOSCH,
BLACKBERRY, CANNON, CISCO SYSTEMS, DISNEY, INTEL, IBM, PANASONIC,
PIONEER, PHILIPS, ORACLE, HP, GOOBER, GOOGLE, NASA, NEC, NEONWAY,
NOKIA, SAMSUNG, SIEMENS, SONY, XEROX, XILINX, YAMAHA и др.
Если вы хотите идти в ногу со временем, то вам без этой книги просто не обойтись,
поскольку она является исчерпывающим пособием по написанию Qt 5-программ
на С++ и QML.
Макс Шлее, закончил Университет прикладных наук в городе Кайзерлаутерн (Германия).
Сооснователь компании NEONWAY по разработке программного обеспечения на Qt. Рабо-
тал разработчиком программного обеспечения в фирмах THOMSON, Grass Valley,
DigitalFilmTechnology Weiterstadt, Goober Ltd. и Advancis. Эксперт в области объектно-
ориентированного проектирования, специализирующийся на C++ и Qt. Создатель более 40
программ и приложений для Windows, Mac OS X, iPhone, iPad и Android. Увлеченно зани-
мается проектами в области программирования графики, звука и анализа финансовых рын-
ков. Является автором ряда статей, научных докладов на международных конференциях по
генеративному программированию пользовательского интерфейса. Автор книг «Qt 4/4.5/4.8.
Профессиональное программирование на C++» и др. Связаться с автором можно по адресу
электронной почты [email protected] или через его персональный блог
www.maxschlee.com.