2

今天开始学习 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

4 回答 4

6

您不能从静态方法调用非静态方法。您需要将方法设为静态,或创建一个实例。

要使其成为静态,请使用:

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

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

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

static void Main(string[] args)
{
    var program = new Program();
    program.DisplayMessage();
}
于 2013-09-04T22:35:17.887 回答
2

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

Main是静态方法,所以要调用其他的静态方法(make DisplayMessagestatic),也可以实例化非静态方法所在的类:

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

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

于 2013-09-04T22:36:33.407 回答
1

您需要标记方法static

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

因此,将您的函数签名更改为:

public static void DisplayMessage()

将工作。

于 2013-09-04T22:35:39.497 回答
0

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

public static void DisplayMessage()
....

static意味着您不必创建实例Program来使用它,并且您的Main方法是静态的,因此您没有Program.

另一种方法是创建一个实例Program

Program program = new Program();
program.DisplayMessage();
于 2013-09-04T22:37:31.927 回答