【发布时间】:2022-04-22 08:10:04
【问题描述】:
基本上我希望能够在一个类的实例中引用一个变量,但我希望该引用成为一个类变量,所以我不需要将它作为参数发送到类内部
代码:
int num = 0;
myClass(num);
print num; // output is 0 but i'd like it to be 10 :)
class myClass
{
private int classNumber;
myClass(ref int number)
{
print number; //output is 0
// id like this to be a reference to the refenrence
classNumber = number;
DoSomething();
}
public void DoSomething()
{
ClassNumber = 10;
}
}
为什么我问这个是因为我正在使用 winforms 并且有一个主表单将一个类的实例发送到一个应该编辑类并将其发送回的新表单..现在我使用 Form.ShowDialog () 避免用户在新表单中编辑时使用主表单,然后从新表单中获取数据
editForm edtfrm = new editForm(ref instanceOfClass);
edtfrm.showDialog();
//grab the instance back
instanceOfClass = edtfrm.editedClass;
我该如何解决这个问题?我不喜欢这个解决方案
【问题讨论】:
-
您的两个问题似乎完全无关。您确定问题 1 的解决方案将帮助您解决问题 2?
-
"problem 2" 就是我如何解决这个难题 atm .. 通过创建我引用的内容的副本,然后当我完成编辑它时将其复制回来,如果我这样做了,则在问题 1 中“ classNumber" public 并且在打印之前我会做
num = myClass.classNumber -
由于
instanceOfClass是一个引用,你不需要使用ref来传递它(因为你想改变instanceOfClass的内容,而不是指针本身)。我也不明白为什么你必须“抢回实例”...... instanceOfClass 和editedClass 应该仍然都指向内存中的同一个对象,不是吗?