今天开始学习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();
}
}
}
如果有人会帮助我(并希望其他人,有点糟糕的编程背景,像我的自己一样)会感激不尽。
答案 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
。
由于Main
为static
,您只能从中访问其他static
成员/方法。
将功能签名更改为:
public static void DisplayMessage()
会工作。
答案 3 :(得分:0)
简单的解决方法是使DisplayMessage()
静态:
public static void DisplayMessage()
....
static
表示您不必创建Program
的实例来使用它,并且您的Main
方法是静态的,因此您没有{的实例{1}}。
另一种方法是创建Program
的实例:
Program