繁体   English   中英

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

[英]Passing data from one instance of a class to another instance of a class in C#

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

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

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

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

谢谢您的帮助。

您可以尝试更改您的Class1构造函数,如下所示:

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

然后将Class2实例传递给Class1构造函数:

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

我不太熟悉接口,这可能是最好的解决方案吗?

不,完全没有,接口在这里无关。

我还以为我可能能够将class1中的数据写入文件,然后让class2读取并在循环期间从文件中删除数据......但这看起来有点单调乏味。

嗯,不确定我理解。

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

在OOP中,您有两种方法可以调用方法:

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

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

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

然后你可以按如下方式调用你的课程:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM