Поиск
 

Изучаем C Sharp (C#)

Программирование на C Sharp (C#) с нуля

Cи Шарп это просто Simple C#
Логин Пароль Вход Регистрация
Главная
Изучаем C#
Web-приложения
Win-приложения
Web-сервисы
ADO.NET
FrameWork
Алгоритмы
Исходники
Классы
Среда разработки
Статьи
Форум
FAQ
О Проекте
Обратная связь
Отблагодарить

Введение в классы - Main (часть 3)

МЕТОД Main


У каждого приложения на С# должен быть метод Main, определенный в одном из его классов. Кроме того, этот метод должен быть определен как public и static (ниже будет объяснено, что значит static). Для компилятора С# не важно, в каком из классов определен метод Main, а класс, выбранный для этого, не влияет на порядок компиляции. Здесь есть отличие от C++, где зависимости должны тщательно отслеживаться при сборке приложения. Компилятор С# достаточно «умен», чтобы самостоятельно просмотреть ваши файлы исходного кода и отыскать метод Main. Между тем, этот очень важный метод является точкой входа во все приложения на С#.
Вы можете поместить метод Main в любой класс, но для его размещения рекомендуется создавать специальный класс. Это можно сделать, используя простой класс MyClass.


using System;
class MyClass
{
    private int MyClassID;
    class AppClass
        {
            static public void Main()
            {
                MyClass MyObj = new MyClass();
            }
        }
}




Здесь два класса. Этот общий подход используется при программировании на С# даже простейших приложений. MyClass представляет собой класс предметной области, a AppClass содержит точку входа в приложение (Main). В этом случае метод Main создает экземпляр объекта MyClass, и, будь это настоящее приложение, оно использовало бы члены объекта MyClass.

Аргументы командной строки


Вы можете обращаться к аргументам командной строки приложения, объявив метод Main как принимающий аргументы типа массива строк. Затем аргументы могут обрабатываться так же, как любой массив. Хотя речь о массивах пойдет в последующих уроках, ниже приводится простой код, который по очереди выводит все аргументы командной строки на стандартное устройство вывода.


using System;
class СommandLineApp
{
    public static void Main(string[] args)
    {
        foreach (string arg in args)
        {
            Console.WriteLine("Аргумент: {0}", arg);
        }
    }
}




А вот пример вызова этого приложения с парой случайно выбранных чисел:

C:\projects\CommandLine>CommandLineApp 100 200
Аргумент: 100
Аргумент: 200
Аргументы командной строки передаются в виде массива строк. Если это флаги или переключатели, их обработку вы должны запрограммировать сами.

Возвращаемые значения
Чаще всего метод Main определяется так:


using System;
class SomeClass
{
    public static void Main()
    { 
    }
}



Метод Main можно определить так, чтобы он возвращал значения типа int. Хотя это не является общепринятым в приложениях с графическим интерфейсом, такой подход может быть полезным в консольных приложениях, предназначенных для пакетного исполнения. Оператор return завершает исполнение метода, а возвращаемое при этом значение применяется вызывающим приложением как код ошибки для вывода определенного пользователем сообщения об успехе или неудаче.
Для этого служит следующий прототип:


public static int Main()
{
    // Вернуть некоторое значение типа int,
    // представляющее код завершения.
    return 0;
}




Несколько методов Main


В С# разработчиками включен механизм, позволяющий определять более одного класса с методом Main. Зачем это нужно? Одна из причин — необходимость поместить в ваши классы тестовый код. Затем, используя переключатель /main;<имя_Класса>, компилятору С# можно задавать класс, метод Main которого должен быть задействован. Вот пример, в котором создано два класса, содержащих методы Main:
Чтобы скомпилировать это приложение так, чтобы в качестве точки входа в приложение применялся метод Main1.Main, нужно использовать переключатель:
csc MultipleMain.es /main:Main1
При изменении переключателя на /main:Main2 будет использован метод Main2.Main.
Следует соблюдать осторожность и задавать в указанном переключателе имени класса верный регистр символов, так как С# чувствителен регистру. Кроме того, попытка компиляции приложения, состоящего из нескольких классов с определенными методами Main, без указания переключателя /main, вызывает ошибку компилятора.


using System;

class Main1
{
    public static void Main()
    {
        Console.WriteLine("Main1");
    }
    class Main2
    {
        public static void Main()
        {
            Console.WriteLine("Main2");
        }
    }
}



Предыдущая стр.    Оглавление    Следующая стр.
Средняя оценка: (4,5 - 6 голосов)
Для оценки необходимо зарегистрироваться


Только зарегистрировавшиеся пользователи могут оставлять комментарии

Комментирует andrey 16.01.2010 15:36:43
А мне вот интересно, кто писал этот материал? У меня после прочтения нескольких "уроков" создалось стойкое впечатление, что писал это школьник, который и сам не мастер в программировании.

Комментирует james 18.01.2010 9:44:56
А что не так то? Ну во-первых ресурс для начинающих А во-вторых может сам чего напишешь если гуру такой

Комментирует student_elets 27.01.2010 20:43:31
а мне как начинающему очень даже интересно читать данный ресурс.

Комментирует dellby 04.03.2010 17:34:30
ресурс для зарабатывания на бегуне сей момент и материал так понимаю откуда-то как-то взят. Мне на самом деле все равно, читать удобно и примеры можно копи-пастить и смотреть как они работают. НО ошибки, вырубают когда блок текста перечитывашь по 3 раза, чтоб понять что там должно быть.

Комментирует leftCh 22.03.2010 14:43:50
Отличный ресурс и стиль изложения. Все просто быстро и компактно. Примеры работают. Можно быстро понять общий принцип. А за подробностями лучше в MSDN сходить, чем читать книги, содержащие 300 страниц с названием "Освой самостоятельно С# за 24 часа", написанные как бы профессионалами :)

Комментирует sbit 30.03.2010 17:40:06
Я думаю что сайт нормальный. Раздел "Изучаем С#" изложен не самым лучшим образом, а вот "Win-приложения" - класно. Там всё (кроме урока "Рисуем на форме") изложено очень чётко и понятно.

Комментирует -=WaRWaR=- 29.04.2010 16:04:18
все отлично, вот только объясните по последнему абзацу - как пользоваться переключателем?

Комментирует gavrikr1 07.08.2010 20:08:48
C:\projects\CommandLine>CommandLineApp /100 200

Комментирует gavrikr1 07.08.2010 22:04:42
Если в компиляцию включено несколько типов с методом Main, можно указать, какой тип содержит метод Main, который необходимо использовать в качестве точки входа в программу. Этот параметр используется при компиляции EXE-файлов. Установка данного параметра компилятора в среде разработки Visual Studio Откройте страницу Свойства проекта. Выберите страницу свойств Приложение. Измените значение свойства Начальный объект.

Комментирует ArsLaN_young_TamerLaN 19.08.2011 13:28:53


Комментирует ArsLaN_young_TamerLaN 19.08.2011 13:30:41
a cho ob arrayi,pointers i functions, o strukture ni4ego netu

Комментирует daf.c 08.11.2011 20:13:43


Комментирует daf.c 08.11.2011 20:14:04


Комментирует Gordon 23.01.2012 22:51:13
andrey вали к чёрту если не нравится, просто тот кто писал очень опытный и понимает что новичком нужно объяснять всё подробному как малыш малышу. А ты полный придурок andrey

Комментирует dimuch2011 24.01.2012 23:36:53
andrey, уроки дійсно прикольні, тому що всім потрібно розуміти, а ти такий самовпевнений, то придумай сам щось більш оригінальніше, сумніваюсь що це в твоїх силах!

Комментирует mayson 28.02.2012 16:47:00
Кто нибудь знает Main1.Main, нужно использовать переключатель: csc MultipleMain.es /main:Main1 куда этот переключатель поставить?? По поиску везде аналогичный текст статьи и нигде нет ответа

Комментирует merlinwarwar 09.06.2012 13:19:54
заходим в Properties вашего проекта, и в поле startup object: выбираем какой из main-ов использовать.

Комментирует Tanya 15.04.2013 17:41:59
Spasibo vse ponyatno!