C# 从另一个类调用公共方法
在c#中,有没有一种方法可以从另一个类调用公共方法而不实例化它的实例C# 从另一个类调用公共方法,c#,C#,在c#中,有没有一种方法可以从另一个类调用公共方法而不实例化它的实例 class ClassA{ public void callMe(){ //something... } } class ClassB{ public void WannaCallYou(){ //here I want to call ClassA's callMe() } } 使用静态关键字 public class ClassA { public
class ClassA{
public void callMe(){
//something...
}
}
class ClassB{
public void WannaCallYou(){
//here I want to call ClassA's callMe()
}
}
使用静态关键字
public class ClassA
{
public static void CallMe(){
}
}
public class ClassB
{
public void WannaCallYou(){
ClassA.CallMe();
}
}
如果你不能使它静止,你可以试着用这种方法。
实例化一个静态类,并让它调用GetInstance。这就是您想要的吗
public class ClassA
{
public void CallMe();
}
public class ClassB
{
public void WannaCallYou(ClassA a)
{
a.CallMe();
}
}
还是要使用专用字段
public class ClassB
{
private ClassA a;
public ClassB(ClassA a)
{
this.a = a;
}
public void WannaCallYou()
{
a.CallMe();
}
}
面向对象编程的一个基本概念是封装。类不仅应该封装用于描述对象的数据,还应该封装对数据进行操作所需的所有方法。把一个类想象成一个公文包,里面不仅有纸(数据),还有铅笔、橡皮擦、尺子,还有你需要的任何东西(方法)来用数据填充文件
因此,在您的情况下,在没有获得公文包的情况下盲目调用方法
CallMe()
(一个ClassA
)是违反规则的。一旦您有了对ClassA
的引用,那么调用它的方法或读取它的数据就变得很简单了。使它成为静态的。这可能不是做你正在做的事情的正确方法,除非它是某种无状态助手方法。是的,我想到了,但我不能使它成为静态的。我想知道是否有一种方法不使用static@Matahari:不使用静态的任何具体原因?您的实际需求是什么?您需要对ClassA
的引用才能访问其方法。顺便说一句,请使用标准命名约定,并将方法callMe()
转换为callMe()
。
public class ClassB
{
private ClassA a;
public ClassB(ClassA a)
{
this.a = a;
}
public void WannaCallYou()
{
a.CallMe();
}
}