如果,假设我有一个带有ListView和Update()函数的FormA。然后我还有一个带有函数A()的Math-Class,它有一些神奇的功能......可以使用委托来从A()调用Update()吗?或者,还有更好的方法?我意识到从另一个班级更新一个gui表格是冒险的....提前谢谢!
答案 0 :(得分:2)
是。只要Math类不知道它实际调用的是什么,它就不那么危险了。您只需从表单中将其指向所需的函数即可给出一个粗略的想法:
public class MathClass {
public Action FunctionToCall { get; set; }
public void DoSomeMathOperation() {
// do something here.. then call the function:
FunctionToCall();
}
}
在您的表单中,您可以这样做:
// Form.cs
public void Update() {
// this is your update function
}
public void DoMathStuff() {
MathClass m = new MathClass() { FunctionToCall = Update };
m.DoSomeMathOperation(); // MathClass will end up calling the Update method above.
}
您的MathClass调用Update,但它不知道该对象告诉它调用Update或Update是什么..使它比将对象紧密耦合在一起更安全。