2013-09-04 2 views
2

Начал изучать C# сегодня, но не может понять, как вызвать функции/методы в Main.Как начать публичный метод в Main?

Если бы у меня было несколько методов, как тот, который я создал, и имейте все это в этом файле для того, чтобы просто писать в одном файле, я бы очень хотел называть их один за другим, просто попробовать их.

Итак, если бы я позвонил или начал этот DisplayMessage() в Main, как я мог это сделать?

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

Вот что мне удалось произвести/узнать до сих пор сегодня:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace FirstProgram 
{ 
    class Program 
    {  
     static void Main(string[] args) 
     { 
      //Call DisplayMessage() here? 
     } 

     public void DisplayMessage() 
     { 
      string str1; 
      Console.WriteLine("Please enter your first name:"); 
      str1 = Console.ReadLine(); 
      Console.WriteLine("Hello {0}", str1); 
      Console.ReadLine(); 
     } 
    } 
} 

Был бы благодарен, если бы кто-то поможет мне (и, надеюсь, другие, с несколько плохой программирования фоном, как мой сам) из.

+0

'Новая программа() DisplayMessage();' –

ответ

6

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

Чтобы сделать его статическим, использование:

static void Main(string[] args) 
{ 
    DisplayMessage(); 
} 

public static void DisplayMessage() 
{ 
    string str1; 
    // ... 

В противном случае, вы можете создать экземпляр, и вызовите метод экземпляра:

static void Main(string[] args) 
{ 
    var program = new Program(); 
    program.DisplayMessage(); 
} 
+0

объяснил Ну, спасибо, сэр.. –

1

Вам нужно отметить метод static.

С Main является static, вы можете получить доступ только к другим static членам/методам.

Так изменив сигнатуру к этому:

public static void DisplayMessage() 

будет работать.

2

Для простоты вы можете хранить DisplayMessage() там, чтобы проверить его.

Main статический метод, поэтому вы должны вызывать другие статические методы (сделать DisplayMessage статический), или вы можете создать экземпляр класса, который не-статический метод в:

static void Main(string[] args) 
{ 
    Program p = new Program(); 
    p.DisplayMessage(); 
} 

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

0

Простое исправление было бы сделать DisplayMessage() статические:

public static void DisplayMessage() 
.... 

static означает, что вам не нужно создавать экземпляр Program использовать его, и ваш метод Main является статическим, так что вы не» t имеет экземпляр Program.

Другой путь был бы создать экземпляр Program:

Program program = new Program(); 
program.DisplayMessage(); 
+1

Зачем «нужен конструктор для создания экземпляра»? –

+0

@SimonWhitehead У вас нет в этом случае раннего утреннего мозга. – TheEvilPenguin

+1

Действительно. Кстати, привет, товарищ Викторианский :) –

Смежные вопросы