可能重复:为什么我只能从静态函数访问静态成员?
当我试图从静态方法中调用普通方法时,我遇到了错误:
需要对象引用才能访问非静态字段、方法或属性
这意味着我需要创建该类的对象,然后调用非静态方法。如果要直接调用该方法,则必须将该方法声明为静态。
但是,在这种情况下,调用方法和被调用方法属于同一类。那么为什么我需要在从静态方法调用时创建一个对象,而我可以从非静态方法调用非静态方法。
例如:
需要对象引用才能访问非静态字段、方法或属性
这意味着我需要创建该类的对象,然后调用非静态方法。如果要直接调用该方法,则必须将该方法声明为静态。
但是,在这种情况下,调用方法和被调用方法属于同一类。那么为什么我需要在从静态方法调用时创建一个对象,而我可以从非静态方法调用非静态方法。
例如:
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;
}
}
错误:非静态字段、方法或属性需要对象引用
private static void outTestMethod
就可以了,它会正常工作。你不需要像你说的那样“创建一个对象”。 - Icarus