我正在尝试将数据从一个类的一个实例传递到另一个类的实例 - 即调用属于另一个类的方法(非静态)。
为了简单起见,我将在这里编写代码,但原理仍然是相同的。
我们的第一堂课将被称为 class1 ,我们的第二堂课将被称为 class2 。 Class1 将尝试调用名为 myMethod 的 class2 中的方法,该方法接受参数:int i 。
以下是代码:
namespace myNamespace
{
static void Main()
{
Class1 c1 = new Class1();
Class2 c2 = new Class2();
}
public class Class1
{
public Class1()
{
class2.myMethod(5);
}
}
public class Class2
{
private int myInt;
public myMethod(int i)
{
myInt = i;
}
}
}
现在我可以在代码中看到一些明显的问题。首先,Class1没有Class2的实例将数据传递给......但是由于我的程序的性质,这必须是如何完成的。 (Class2运行循环意味着除了运行之外没有代码)
可能的解决方法是让myMethod保持静态,但是存在将数据从静态方法传递到非静态变量的问题。
我对接口读的不太好,这可能是最好的修复方法吗?我还以为我可以将 class1 中的数据写入文件然后让 class2 读取并在循环期间从文件中删除数据......但这似乎有点单调乏味。
那么我应该如何传递数据/调用方法?
感谢您的帮助。
答案 0 :(得分:3)
您可以尝试更改Class1
构造函数,如下所示:
public Class1(Class2 c2)
{
c2.myMethod(5);
}
然后将Class2
实例传递到Class1
构造函数中:
Class2 c2 = new Class2();
Class1 c1 = new Class1(c2);
答案 1 :(得分:0)
我对接口读的不太好,这可能是最好的修复方法吗?
不,完全没有,接口在这里无关。
嗯,我不明白。我还以为我可以将class1中的数据写入文件然后让class2读取并在循环期间从文件中删除数据......但这看起来有点单调乏味。
那么我应该如何传递数据/调用方法?
在OOP中,您有两种方法可以调用方法:
答案 2 :(得分:0)
我不确定我理解您的要求,但最简单的方法是将Class2
的实例传递给Class1
的构造函数:
public Class1(Class2 c2)
{
c2.myMethod(5);
}
然后你可以按照以下方式打电话给你的课程:
Class2 c2 = new Class2();
Class1 c1 = new Class1(c2);