C# 公共与公共静态方法
在阅读了C#编程教程中的访问修饰符之后,我得出结论,定义一个方法C# 公共与公共静态方法,c#,static,C#,Static,在阅读了C#编程教程中的访问修饰符之后,我得出结论,定义一个方法public就足以让它从同一名称空间的另一个表单中“看到” 然而,在实践中,每当我尝试实现这个方法时,我还必须将该方法定义为静态,以便从相同名称空间的其他表单引用它 我失去什么了吗? 我做错了什么?对于公共静态方法,您不需要对对象的引用。该方法是静态的,可以在class级别访问 如果无法访问公共方法,则需要对该对象的引用,然后才能访问 public class AClass { public void DoSomething
public
就足以让它从同一名称空间的另一个表单中“看到”
然而,在实践中,每当我尝试实现这个方法时,我还必须将该方法定义为静态
,以便从相同名称空间的其他表单
引用它
我失去什么了吗?
我做错了什么?对于公共静态
方法,您不需要对对象的引用。该方法是静态的,可以在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).
publicstatic
方法不需要对象实例,它们可以在不创建类的任何实例的情况下使用
ClassName obj = new ClassName();
obj.MyPublicMethod();
ClassName.MyStaticPublicMethodName()
当aspublic
(非静态)方法需要类的实例时,public(非静态)方法通常帮助您处理对象的数据成员(字段)
要使用非静态公共方法,需要创建类的实例
ClassName obj = new ClassName();
obj.MyPublicMethod();
您是否创建了该方法所在的类的实例?该类是否也标记为static?发布一些代码“anObject.DoSomethingElse();//也可以正常工作”——您确定吗?Mono的编译器给出了一个硬错误“error CS0176:Static member无法通过实例引用访问,请改为使用类型名对其进行限定”,我似乎记得在Microsoft的编译器中也看到了一个错误。事实上,该错误代码是CS0176。