Что такое С#
Как отмечалось выше, С# — один нз языков программирования, который может использоваться для создания приложений, выполняемых в среде .NETCLR. Этот язык — результат эволюции языков С и C#, созданный компанией Microsoft специально для использования на платформе .NET, Являясь новейшей разработкой, С# конструировался очень тщательно, с учетом наилучших возможностей других языков, предназначенных для решения специфических проблем.
Создавать приложения на С# легче, чем на C#, поскольку синтаксис языка С# более простой, чем синтаксис C#. Тем не менее С# является мощным языком программирования, и имеется мало вещей, которые можно сослать на C# и нельзя на С#. Однако необходимо помнить, что возможности С#, соответствующие наиболее продвинутым возможностям C# (например непосредственный доступ и внесение изменений в системную память), могут быть осуществлены только с помощью кода, помеченного как unsafe (небезопасный). Эти продвинутые способы программирования, как следует уже нз их названия, представляют потенциальную опасность, поскольку они позволяют записывать информацию в критические системные участки памяти с потенциально катастрофическими результатами. Именно по этой причине, а также нз некоторых других соображений мы не будем рассматривать данную тему в этой книге.
Иногда код на С# оказывается более объемным, чем на C#. Это следствие того, что в С# (в отличие от С+ + ) осуществляется контроль безопасности использования типов. С точки зрения непрофессионала это означает, что если некоторые данные отнесены к определенному типу, то впоследствии они не могут самостоятельно преобразовываться в другие типы, Поэтому, существуют строгие правила, которым необходимо следовать при выполнении преобразования из одного типа в другой. Это часто приводит к необходимости писать на С# больший объем кода, чем на C#. Однако взамен мы получаем то преимущество, что программа становится более надежной и ее отладка упрощается, поскольку .NET постоянно следит за тем, к какому типу относится данная переменная в каждый конкретный момент времени, К примеру, в С# мы не можем дать задание: "Возьми 4 банта памяти из этих данных и 10 байтов нз других данных и рассматривай эту область памяти как X", но это не обязательно является недостатком.
С# является всего лишь одним из языков, позволяющих работать в .NET, но на взгляд автора он безусловно лучший. Его главное преимущество заключается в том, что С# — единственный язык, разработанный для .NETFramework "с нуля", н он может использоваться в качестве основного языка для различных версий .NET, которые предназначаются для переноса на другие операционные системы. Для того чтобы некоторые языки — вроде VB.NET — в максимальной степени соответствовали своим предшественникам и прн этом могли работать с CLR, приходится отказываться от поддержки отдельных возможностей библиотеки программ .NET. Напротив, С# позволяет использовать любые возможности, предоставляемые библиотекой программ .NETFramework,
Какие типы приложений могут создаваться на С#
Как уже говорилось, .NETFramework не налагает никаких ограничений на возможные типы создаваемых приложений. С# использует эту систему и также не имеет никаких ограничений, касающихся типов приложений. Тем не менее давайте рассмотрим некоторые наиболее часто встречающиеся типы приложений:
□ Приложения Windows. Это приложения вроде MicrosoftOffice, имеющие знакомый "Windows-подобный" вид и представление. Создавать такие приложения достаточно просто с помощью модуля .NETFramework, который называется WindowsForms и представляет собой библиотеку управляющих элементов (кнопок, панелей инструментов, меню и т. п.); эта библиотека может использоваться для создания пользовательского интерфейса (userinterface, UI) Windows.
□ Web-приложения. Эти приложения представляют собой web-страницы, которые могут просматриваться любым web-браузером. В состав .NETFramework входит мощная система динамического создания содержимого web-страниц, позволяющая идентифицировать пользователя, обеспечивать безопасность и пр. Эта система называется ActiveServerPages.NET (ASP.NET — активные серверные страницы .NET); для создания приложений ASP.NET можно применять WebForms языка С#,
□ Web-службы. Это новый замечательный способ создания гибких распределенных приложений. С помощью web-служб можно обмениваться по Интернету практически любыми данными с использованием единого простого синтаксиса независимо от того, какой язык программирования применялся при создании web-службы и на какой системы она размещена.
Приложениям всех перечисленных типов может потребоваться доступ к базам данных, что осуществляется с помощью раздела ,NETFramework, называемого ActiveDataObjects.NET (ADO.NET — активные объекты с данными .NET). Также можно использовать и многие другие ресурсы, например, инструменты для создания сетевых компонентов, графического вывода, выполнения сложных математических вычислений и т. д.
С# в этой книге
Второй и третий разделы данной книги посвящены синтаксису и использованию С#, при этом онн практически обходят вниманием -NETFramework. Это совершенно необходимо, поскольку без твердых навыков программирования на С# невозможно использовать .NETFramework. Фактически мы начнем с самых азов, а рассмотрение наиболее сложной темы — объектно-ориентированного программирования (ООП, ObjectOrientedProgramming) — отложим до того момента, когда будут изучены основы. Материал будет излагаться начиная с самых простых принципов, исходя нз предположения, что у читателя отсутствуют какие-либо знания по программированию.
После этого мы окажемся готовы к созданию приложений тех типов, которые перечислены выше. В четвертом разделе настоящей книги будет описано программирование с использованием WindowsForms; в пятом разделе рассматриваются другие связанные с .NET темы (например доступ к базам данных); в шестом разделе вы познакомитесь с созданием web-приложений и web-служб. В заключение будут даны более сложные практические примеры, где будет применена информация из предшествующих разделов.
Пишите программы на C# в простом и четком стиле.
Теперь, когда мы выяснили, что из себя представляет С# и каким образом он вписывается в .NETFramework, настало время заняться грязной работой и написать конкретную программу. На протяжении всей книги мы будем использовать VisualStudio.NET (VS), поэтому первое, что необходимо сделать,— это получить некоторое представление о данной среде разработки. VS является очень большим и очень сложным продуктом, способным навести ужас на тех, кто встречается с ним впервые; однако использовать его для создания несложных приложений на удивление просто. Когда в данной главе мы начнем с ним работать, вы увидите, что немного "поиграть" с программами на С# можно и не обладая большими знаниями. В дальнейшем вам встретятся более сложные операции, которые может выполнять VS, однако на данный момент все, что нам потребуется,— это базовые знания о его возможностях.
Познакомившись с VS, мы создадим два простых приложения. При этом для нас будет важно не столько их программное наполнение, сколько то, что они работают правильно и что мы прошли через все процедуры создания приложений.
Первое приложение, которое мы собираемся создать, будет простым консольным приложением. Консольными называются такие приложения, в которых не используется многооконная графическая среда; поэтому нам не придется беспокоиться о кнопках, меню, организации взаимодействия с указателем мыши и тому подобных вещах. Это приложение будет запускаться нз окна командной строки, и взаимодействие с ним будет организовано весьма простым способом.
Вторым будет приложение WindowsForms. Его внешний вид и работа с ним окажутся очень знакомыми для пользователей Windows, а усилий на его создание потребуется {что удивительно) не так уж много. При этом синтаксис необходимого кода окажется более сложным, хотя во многих случаях нам не придется беспокоиться о деталях.
Приложения обоих типов будут использоваться нами на протяжении следующих двух разделов, причем вначале консольному приложению будет уделяться несколько больше внимания. Дополнительная гибкость окопных приложений не является принципиально важной нри изучении языка С#, в то время как простота консольных приложений позволит нам сосредоточиться на изучении синтаксиса и не беспокоиться о внешнем виде приложения.
При первой загрузке VS на монитор выводится множество окоп, большинство нз которых пусты, а также ряд пунктов меню и иконок, которыми нам предстоит пользоваться, но не волнуйтесь заранее: очень скоро они станут более попятными,
Рис. 2. Visual Studio 2008 (выпущена 19 ноября 2007 г, с 28 октября 2008 г впервые доступна версия на русском языке)
Основное окно, в котором при запуске VS появляется "начальная страница", в дальнейшем будет содержать весь наш код. Оно поделено на части так, чтобы можно было легко перемещаться между файлами, щелкая мышью по имени соответствующего файла. У этого окна имеются и другие функции: в нем могут выводиться графические пользовательские интерфейсы, разрабатываемые для наших проектов, файлы с обычным текстом, HTML, а также различные встроенные в VS инструменты. Все эти функции будут описываться по ходу изложения материала.
Выше основного окна располагаются панели инструментов и меню VS. Здесь могут находиться панели инструментов с са'мыми разнообразными функциональными возможностями: сохранение и загрузка файлов, создание и запуск проектов, отладка управляющих элементов и т. д. Повторим еще раз, что все эти возможности будут обсуждаться по мере возникновения необходимости в них.