Опубликован: 25.03.2010 | Доступ: свободный | Студентов: 1447 / 157 | Оценка: 4.31 / 4.00 | Длительность: 25:42:00
Лекция 7:

Основы языка C#. Часть 1

< Лекция 6 || Лекция 7: 12345 || Лекция 8 >
Аннотация: В данной лекции описываются такие понятия языка как сборки, уровни доступности членов, инициализация переменных и статические члены данных.

Корпорация Microsoft разработала новый язык программирования как клей для библиотеки класов .NET Framework. Последняя версия языка на настоящий момент называется C# 2.0. Она реализована в среде разработки Visual Studio 2005. Язык C# вобрал в себя все лучшее из существующих языков высокого уровня, особенно от C++.

Сборки

Завершенный проект, обработанный компилятором и линковщиком, в .NET называется сборкой ( Assembly ). Он определяется шаблоном ( Template ), выбранным на этапе создания нового проекта командой меню File/New/Project.


Можно создать исполнимую сборку ( Execute ) оконнного или консольного приложения ( Application ), а можно создать библиотечную динамически компонуемую сборку ( DLL ). Показанное окно New Project является диалоговым окном мастера оболочки, в зависимости от настройки которого мастер создаст нужный тип приложения. Сборки Windows Application (Оконное приложение) и Console Application (Консольное приложение) являются исполнимыми в среде . NET, поэтому на этапе проектирования их можно откомпилировать, скомпоновать и исполнить. Библиотечные сборки можно только компилировать, а работать они будут совместно с исполнимыми файлами.

Несколько точек входа приложения

Любой язык легче изучать на примерах консольного приложения. Консольным называется приложение, в котором стандартным устройством последовательного вывода информации является единственное окно текстового типа. Консольными удобно делать вспомогательные программы (утилиты), не требующие активного диалога с пользователем и предназначенные для выполнения больших объемов монотонной работы. Режимы работы утилит устанавливаются с помощью параметров командной строки (опций), которые для лучшего распознавания внутри самой программы начинаются с дефиса (тире) или слэша (/).

Любой исполнимый проект консольного или оконного типа должен иметь по крайней мере одну точку входа, определяемую статической функцией Main(). В языке C# нет глобальных функций, как это допустимо в языке C++.Каждая функция, в том числе и функция Main(), должна принадлежать какому-нибудь классу, т.е. быть методом. Функция Main() объявляется как статический метод, не требующий создания экземпляра ( Instance ) класса. В приложении, имеющем несколько классов, функция Main () может входить в несколько из них. В этом случае для определения единственной точки входа нужно определить через окно свойств проекта, какой именно класс будет стартовым для данного приложения.

Продемонстрируем это на примере консольного приложения.

  • Создайте заготовку консольного приложения, выполнив команду File/New/Proiect и настроив окно мастера примерно так

Обратите внимание, что мастер создал некоторый код, достаточный, по его мнению, для начала работы над проектом консольного приложения



Этот код на данном этапе даже несколько избыточен. Поэтому для тренировки его несколько подсократим.

  • Уберите две ненужные (пока) ссылки на сборки System.Data и System.Xml

Обратите внимание, что в панели Object Browser эти ссылки также исчезли.

  • В панели Solution Explore r откройте файл Program.c s и удалите подключения
using System.Collections.Generic;
using System.Text;
  • Скорректируйте оставшийся код файла Program.cs так
using System;
    
namespace EntryPoint
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Точка входа в классе Program");
    
            // Ждем нажатия клавиши Enter
            Console.ReadLine();
        }
    }
    
    class Class1
    {
        static int Main()
        {
            Console.WriteLine("Точка входа в классе Class1");
    
            // Ждем нажатия клавиши Enter
            Console.ReadLine();
            return 1;
        }
    }
    
    class Class2
    {
        static void Main()
        {
            Console.WriteLine("Точка входа в классе Class2");
    
            // Ждем нажатия клавиши Enter
            Console.ReadLine();
        }
    }
}
Листинг 7.1 . Код файла Program.cs с несколькими точками входа

Обратите внимание, что функция Main() допускает ряд перегрузок как по количеству и типу аргументов ( сигнатуре ), так и по типу возвращаемого значения. В качестве аргумента используется строковый массив, который содержит список параметров командной строки, включая имя запускаемого приложения. Возвращаемое значение передается операционной системе после завершения работы функции Main() и может служить флагом (признаком) успешного завершения работы приложения.

  • Выполните проект, щелкнув на кнопке Start Debugging панели инструментов оболочки

Мы видим, что проект содержит ошибку - несколько точек входа вместо одной, что отображается в панели Error List (Список ошибок)

Ошибку можно исправить, не убирая лишние точки входа, а только настроив компилятор на восприятие одной конкретной точки входа.

  • Выполните команду Project/Имя_Проекта Properties главного меню оболочки (или выделите узел EntryPoint всего проекта в панели Solution Explorer и щелкните на пиктограмме Properties панели Solution Explorer или выполните команду Properties контекстного меню для этого узла)
  • Выделите вкладку Application окна свойств проекта и через раскрывающийся список Startup object выберите нужный класс с точкой входа
  • Запустите приложение, программа заработала, т.к. неопределенность исчезла.

Здесь мы надуманно ввели несколько функций Main(), чтобы показать возможности оболочки. Обычно приложению .NET нужна только одна функция Main().

< Лекция 6 || Лекция 7: 12345 || Лекция 8 >
Максим Филатов
Максим Филатов

Прошел курс. Получил код Dreamspark. Ввожу код на сайте, пишет:

Срок действия этого кода проверки уже истек. Проверьте, правильно ли введен код. У вас осталось две попытки. Вы также можете выбрать другой способ проверки или предоставить соответствующие документы, подтверждающие ваш академический статус.

 

Как активировать код?