public vs public static方法

时间:2013-03-17 18:27:17

标签: c# static

在C#编程教程中阅读了访问修饰符后,我得出结论,定义方法public足以让它从同一名称空间的另一个Form“看到”。

但是,在实践中,每当我尝试实现它时,我还必须将方法定义为static,以便从同一名称空间的其他Forms引用它。

我失去了什么吗? 我做错了什么?

2 个答案:

答案 0 :(得分:6)

对于public static方法,您不需要对对象的引用。该方法是静态的,可以在class级别访问。

如果您无法访问公共方法,那么您需要对该对象的引用,然后您可以。

public class AClass
{
    public void DoSomething() {}
    public static void DoSomethingElse() {}
}

您可以按如下方式使用它们:

AClass.DoSomethingElse(); // no object reference required
AClass.DoSomething(); // will give compiler error, since you have no object reference.
var anObject = new AClass();
anObject.DoSomething(); // will work fine.
anObject.DoSomethingElse(); // compile error (thx hvd).

答案 1 :(得分:1)

public static方法不需要对象实例,可以在不创建任何类实例的情况下使用它们

ClassName.MyStaticPublicMethodName()

其中public(非静态)方法需要类的实例,公共(非静态)方法通常可以帮助您使用对象的数据成员(字段)。

要使用非静态公共方法,您需要创建类的实例

ClassName obj = new ClassName();
obj.MyPublicMethod();