C # Начинающий, написание / вызов метода - PullRequest
1 голос
/ 21 октября 2010

Когда мы пишем метод, скажем, простой, как

  void myMethod()
    {
    // code here
    // 
    }

, и мы вызываем его из Main (), это делается по существу так:myProgram является абсолютно произвольным (принимая во внимание, конечно, соглашения о кодировании), но что там со ссылкой на Program?

Ответы [ 5 ]

2 голосов
/ 21 октября 2010

Вы объявляете свой метод myMethod внутри класса с именем Program.Поскольку ваш метод не является static методом (т. Е. Он не static void myMethod()), для его работы требуется экземпляр Program.Поэтому вам нужно создать новый экземпляр Program, чтобы вызвать на него myProgram.myMethod().Если бы myMethod было статическим, вы могли бы вызвать его просто с помощью Program.myMethod() или, поскольку вы уже находитесь внутри этого класса, myMethod() (поскольку текущее имя класса подразумевается для статическогометоды).

1 голос
/ 21 октября 2010

Программа - это класс, который содержит методы. По умолчанию единственным методом, который он содержит, является static void Main(...).

Если вы добавите нестатический метод myMethod, он не принадлежит программе class , а скорее экземплярам Программы (называемых объектами).

Статические методы (например, Main) можно вызывать непосредственно из класса:

Program.Main(...);

Нестатические методы должны вызываться из объектов класса:

Program program = new Program();
program.myMethod();

Классы предназначены для группировки, как функциональность. Программа не подходит для этого. Вы должны создать другие классы и использовать их в своем коде.

Используя классы, вы сохраняете похожий код и предоставляете механизм для повторного использования одного и того же кода из разных мест. Вы можете создать столько разных экземпляров «Program», сколько пожелаете, из разных классов и вызывать метод «myMethod» для каждого из них.

Например, у вас может быть класс ClassRoster и Student, который можно использовать следующим образом в классе ClassScheduler:

ClassRoster roster = new ClassRoster();

Student studentOne = new Student();
studentOne.StudentId = "123456";

roster.EnrollStudent(studentOne);
0 голосов
/ 21 октября 2010

Спасибо всем. Я вернулся к своему коду; Я добавил static перед myMethod, и при этом программа myMethod = new Program () стала ненужной (не компилируемой? Незаконной?), И ее можно вызвать, просто написав myMethod() Очевидно, мне нужно изучить, что static делает и как это влияет на методы / классы!

На самом деле я только на третьей неделе моего класса .NET ... наш инструктор, хотя и очень умен, оставляет желать лучшего в категории учителей. Назначенный текст для класса только так себе, по моему мнению, по крайней мере, для меня и как я учусь ( Программирование на C # , О'Рейли) Это очень хорошее сообщество, спасибо!

0 голосов
/ 21 октября 2010

используйте это:

 public void myMethod()
    {
    // code here

    }

в основном методе:

Program myProgram = new Program();
myProgram.myMethod();
0 голосов
/ 21 октября 2010

Program - это тип, который определяет myMethod в вашем вопросе. В C # методы определяются типами.

Вы можете вызывать методы либо через экземпляр определяющего типа, либо через сам тип (если метод статический). Поскольку myMethod не является статичным, вам необходим экземпляр типа Program для его вызова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...