none
С# - Статический и нестатический класс программы RRS feed

  • Вопрос

  • Класс программы может быть статическим

    static class Программа
    {
      static int Main()
      {
        return 0;
      }
    }
    и нестатическим
    class Программа
    {
      static int Main()
      {
        return 0;
       }
    }

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

    Вопрос: создаётся ли экземпляр класса Программа, если создаётся, то чем (средой выполнения?), может ли быть создано несколько экземпляров класса программы? Можно ли самому создать эти экземпляры и может ли это быть нужным в реальной программе?

     

    • Изменено Mak_71_rus 25 июля 2010 г. 7:01
    • Перемещено SachinW 1 октября 2010 г. 21:22 MSDN Forums Consolidation (От:Начинающие разработчики)
    24 июля 2010 г. 8:39

Ответы

  • Нет, средой выполнения экземпляр класса Программа не создается, даже если он нестатический. Среда выполнения просто вызывает статический метод,  который был указан в свойствах проекта при компиляции - Программа.Main() в твоем случае. Сам класс Программа ничем не отличается от остальных.

    Да, самому можно создавать экземпляры класса Программа. Зачем может быть нужным - кто его знает, зависит от фантазии разработчика :)

    • Помечено в качестве ответа Mak_71_rus 25 июля 2010 г. 16:00
    25 июля 2010 г. 12:43

Все ответы

  • Честно говоря, разницы в приведенном коде не заметил

    статическим

    static
    
    
     class
    
    
     Программа
    {
     static
    
    
     int
    
    
     Main()
     {
     return
    
    
     0;
     }
    }
    
    и нестатическим
    static class Программа
    {
     static int Main()
     {
     return 0;
     }
    }
    

    Про статические классы можно почитать здесь .

    24 июля 2010 г. 9:01
    Модератор
  • Спасибо. Я прочитал эту статью, прежде чем задать этот вопрос.

    Просто ошибся немного в первом сообщении. Первый класс объявлен static, а второй  - нет.

    25 июля 2010 г. 7:03
  • Хорошо. Но

    Вопрос: создаётся ли экземпляр класса Программа, если создаётся, то чем (средой выполнения?), может ли быть создано несколько экземпляров класса программы? Можно ли самому создать эти экземпляры и может ли это быть нужным в реальной программе?

    Это про статическую версию "Программа" или нет?

    25 июля 2010 г. 8:56
    Модератор
  • Нет, средой выполнения экземпляр класса Программа не создается, даже если он нестатический. Среда выполнения просто вызывает статический метод,  который был указан в свойствах проекта при компиляции - Программа.Main() в твоем случае. Сам класс Программа ничем не отличается от остальных.

    Да, самому можно создавать экземпляры класса Программа. Зачем может быть нужным - кто его знает, зависит от фантазии разработчика :)

    • Помечено в качестве ответа Mak_71_rus 25 июля 2010 г. 16:00
    25 июля 2010 г. 12:43
  • Получается, что нужна функция Main() но в C# функций нет, есть только методы, которые могут находиться внутри класса. Класс, в котором находится Main() - это любой класс, собственно не представляющий саму программу. Для функции Main() он является просто оболочкой, а представлять собой может что угодно (хоть комплексное число).

    25 июля 2010 г. 16:02