【发布时间】:2013-12-29 16:23:52
【问题描述】:
我正在尝试将数据从一个类的一个实例传递到一个类的另一个实例 - 即从另一个类调用属于一个类的方法(非静态)。
为了简单起见,我将代码在这里编写,但原理还是一样的。
我们的第一个类将被称为 class1,我们的第二个类将被称为 class2。 Class1 将尝试在 class2 中调用一个名为 myMethod 的方法,该方法接受参数: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 在循环期间从文件中读取和删除数据......但这似乎有点乏味。
那么我应该如何传递数据/调用方法?
感谢您的帮助。
【问题讨论】:
-
听起来您需要将 Class2 的实例传递给 Class1 的构造函数。
-
(Class2 运行一个循环,意味着除了它之外没有代码运行) 这似乎是给出正确答案的关键点。当这个类实例进入循环?如果超出它的代码没有运行,您如何期望代码的其他部分工作?多线程?你能更好地解释一下这个第二类的用法吗?
-
所以第二个类运行 openGL (Tao, GLUT) 并在其中调用主循环(在每一帧上渲染)。它不在不同的线程中......我觉得多线程可能是程序的下一步
标签: c# static non-static