如何打电话给其他班级'改变另一个班级的功能'变异在另一个类?

时间:2018-04-27 14:18:07

标签: c# .net

我想调用A类的一个函数来改变B类的变量。但是它会在另一个类中改变'函数,就像C类一样,可以完成工作。

我已经尝试过使用事件处理程序而且我无法做到这一点,因为我对此很感兴趣。这是我试图简化的示例代码。

public class Program
{
    public static void Main(string[] args)
    {
        A oa=new A();
        B ob=new B();
        C oc=new C();

        oa.f(ob);
    }
}

class A
{
    public int a;
    public void f(B ob)
    {
        ob.b=4;
        //for example I want to change b's value 4.
        //but not in this class' function.
        //it must in class C's function.
    }  
}

class B
{
    public int b;
}

class C 
{
    public int c;
    public void f()
    {
        //do something
    }  
}

2 个答案:

答案 0 :(得分:0)

我认为你有两个选择,

  1. oc传递给oa.f(),就像ob一样,然后从C.f()拨打A.f(),将ob传递给{ {1}}并使用oc.f()

  2. 中的b分配ob.B = 4
  3. c.f()中的ob转换为Program这样的变量

    public static

    然后在public class Program { public static B ob; public static void Main(string[] args) { A oa=new A(); ob=new B(); C oc=new C(); oa.f(ob); } } 中,您可以致电C.f()

答案 1 :(得分:-1)

您应该使用有意义的变量名重构代码。 无论如何,你差不多完成了。在类A的方法f中,您需要实例化一个对象oc(C类)并调用该方法。在C类的方法f中,您实际上只应用与A类相同的逻辑。

using System;
namespace Program1
{
    public class Program
    {
        public static void Main(string[] args)
        {
            A oa=new A();
            B ob=new B();

            oa.f(ob);
            Console.WriteLine(ob.b); //8
        }
    }
}
class A
{
    public int a;
    public void f(B ob)
    {
        ob.b=4;

        C oc = new C();
        oc.f(ob);
    }  
}
class B
{
    public int b;
}
class C
{
    public int c;
    public void f(B ob)
    {
        ob.b = 8;
    }  
}