如何在Main中启动公共方法?

时间:2013-09-04 22:33:03

标签: c# .net visual-studio-2010

今天开始学习C#,但是无法理解如何在Main中调用函数/方法。

如果我有一些像我创建的那样的方法,并将它们都放在这个文件中以便只需要在一个文件中写入,我非常想逐个调用它们,只是尝试一下。

因此,如果我要在Main中调用或启动此DisplayMessage(),我该怎么做?

由于我是绿色的,我也想知道这是否会被视为不良做法?您是否总是希望在单独的文件中使用不同的类和/或函数?

以下是我今天迄今为止制作/学习的内容:

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();
        }
    }
}

如果有人会帮助我(并希望其他人,有点糟糕的编程背景,像我的自己一样)会感激不尽。

4 个答案:

答案 0 :(得分:6)

您无法从静态方法调用非静态方法。您需要将方法设为静态,或者创建实例。

要使其静止,请使用:

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

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

否则,您可以创建一个实例,并在实例上调用该方法:

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

答案 1 :(得分:2)

为简单起见,您可以将DisplayMessage()留在那里进行测试。

Main是一个静态方法,所以你必须调用其他静态方法(make DisplayMessage static),或者你可以实例化非静态方法所在的类:

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

将来,如果将它们保存在不同的适当命名的类中,它将使事情变得更简单(并且更容易测试)。

答案 2 :(得分:1)

您需要标记方法static

由于Mainstatic,您只能从中访问其他static成员/方法。

将功能签名更改为:

public static void DisplayMessage()

会工作。

答案 3 :(得分:0)

简单的解决方法是使DisplayMessage()静态:

public static void DisplayMessage()
....

static表示您不必创建Program的实例来使用它,并且您的Main方法是静态的,因此您没有{的实例{1}}。

另一种方法是创建Program的实例:

Program