我真的很抱歉,因为这可能是一个非常新的问题,但我无法在任何地方找到答案。 我对如何调用下面的函数DoStuff感到困惑
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
public void DoStuff()
{
Console.WriteLine("I'm doing something...");
}
static void Main(string[] args)
{
DoStuff();
}
}
}
答案 0 :(得分:3)
public void
是一种实例方法。名为this
的函数有一个隐含的隐藏参数。
public static void
是一种静态方法。没有隐式的this
参数。
您的DoStuff
方法未使用this
引用,因此请将其更改为public static void DoStuff
。
答案 1 :(得分:2)
在实例方法与静态方法上进行MSDN Google搜索 Static and instance methods
更改以下内容:
public void DoStuff()
公开
public static void DoStuff()
如果要在静态void Main中调用公共方法,则需要像这样创建一个新的Program实例
static void Main(string[] args)
{
var prg = new Program();
prg.DoStuff();
}
答案 2 :(得分:1)
创建Program:
的实例static void Main(string[] args)
{
new Program().DoStuff();
}
答案 3 :(得分:1)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
public static void DoStuff()
{
Console.WriteLine("I'm doing something...");
}
static void Main(string[] args)
{
DoStuff();
}
}
}
C#是一种面向对象的编程语言,意味着一个类中的每个成员。由于在普通方法之前的静态方法init,您应该将DoStuff定义为静态方法,以便可以在Main方法中调用它。创建类后,静态成员已经在计算机的内存中初始化,但是,非静态成员将等待该类的实例。在这种情况下,静态成员属于整个类,非静态成员属于类的实例。因此,您可以使用ClassName.StaticMember来调用StaticMember,并且您需要一个类的实际实例来调用非静态成员。就像:new Program()。DoStuff(),如果DoStuff是非静态方法