[英]Static Method of a Static Class vs. Static Method of a Non-Static Class ( C# )
[英]Why calling non-static method inside a static method in C# possible via class instance
通常,我们不能在静态方法内调用非静态方法。 但是,如果我们使用类实例,则可以执行上述操作。 类实例如何使我们成为可能?
问题很简单:您尝试在哪个实例上调用该方法? 应该假定哪些本地字段集?
对于实例方法,这很简单:当您调用SomeInstanceMethod()
,它是隐式的this.
是由编译器添加的,所以这些问题的答案是“当前问题”(从技术角度来说,这是arg0
的值)。 因此,当您键入SomeInstanceMethod()
,编译器会假设您的意思是this.SomeInstanceMethod()
。
在静态方法中的情况下,不存在隐式的this
可添加。 您仍然可以调用实例方法,但是您需要显式指定目标实例。 someObj.SomeInstanceMethod()
可以正常工作。 请注意,您还可以使用实例方法中的someObj.SomeInstanceMethod()
在其他实例的上下文中调用该方法。
通常,我们不能在静态方法内调用非静态方法。
这是一个过分的简化:我们无法通过提供单个方法名称来在自己的类中调用非静态方法,因为没有默认的“ this”对象。 当你写
SomeMethod(arg1, arg2);
在实例方法中,C#将其解释为
this.SomeMethod(arg1, arg2);
在静态方法内部无法使用相同的技巧,因为静态方法无法访问“ this”。
但是,如果我们使用类实例,则可以执行上述操作。
这是因为一旦提供了另一个对象,就无需寻找“这个”对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.