在C#中将数据从一个类的实例传递到另一个类的实例

时间:2013-12-29 16:23:53

标签: c# static non-static

我正在尝试将数据从一个类的一个实例传递到另一个类的实例 - 即调用属于另一个类的方法(非静态)。

为了简单起见,我将在这里编写代码,但原理仍然是相同的。

我们的第一堂课将被称为 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 读取并在循环期间从文件中删除数据......但这似乎有点单调乏味。

那么我应该如何传递数据/调用方法?

感谢您的帮助。

3 个答案:

答案 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中,您有两种方法可以调用方法:

  1. 如果方法不是静态的,则创建类的实例并在此实例上调用方法
  2. 使方法成为静态,然后您可以直接调用它而无需实例

答案 2 :(得分:0)

我不确定我理解您的要求,但最简单的方法是将Class2的实例传递给Class1的构造函数:

public Class1(Class2 c2)
{
    c2.myMethod(5);  
}

然后你可以按照以下方式打电话给你的课程:

Class2 c2 = new Class2();
Class1 c1 = new Class1(c2);