我想调用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
}
}
答案 0 :(得分:0)
我认为你有两个选择,
将oc
传递给oa.f()
,就像ob
一样,然后从C.f()
拨打A.f()
,将ob
传递给{ {1}}并使用oc.f()
b
分配ob.B = 4
将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;
}
}