【发布时间】:2011-12-11 20:13:03
【问题描述】:
可能重复:
Why can I only access static members from a static function?
当我尝试从静态方法中调用普通方法时,出现错误:
非静态字段、方法或属性需要对象引用
所以这意味着我需要创建类的对象,然后调用非静态方法。如果我想直接调用该方法,那么我必须将该方法声明为静态。
但是,在这种情况下,调用方法和被调用方法属于同一个类。那么为什么我需要在从静态方法调用时创建对象,而我可以从非静态方法调用非静态方法。
例如:
class Program
{
//public void outTestMethod(int x,out int y)
//{
// y = x;
//}
static void Main(string[] args)
{
int a = 10;
int b = 100;
outTestMethod(a,out b);
}
private void outTestMethod(int x, out int y)
{
y = x;
}
}
Error:An object reference is required for the non-static field, method, or property
【问题讨论】:
-
在您的示例中,您只需执行
private static void outTestMethod即可。你不需要像你说的那样“创建一个对象”。 -
这个错误的意思正是它所说的;非静态(实例)方法可以访问 Program 实例的成员(此特定示例没有任何成员),而静态方法只能访问静态成员(因为它没有要引用的实例。)这是因为它是可能的拥有一个类的多个实例。
标签: c# .net oop static-methods