gpt4 book ai didi

c# - 在两个Form之间通过引用传递参数

转载 作者:行者123 更新时间:2023-11-30 13:18:21 24 4
gpt4 key购买 nike

我有两种形式(Form1 和 Form2)。在 Form1 上有一个“public int i”变量,它在 Form1 构造函数中设置为值 1。然后我使用以下代码从 Form1 打开 Form2:

Form2 f2 = new Form2(ref i);
f2.ShowDialog();

Form2 的构造函数如下所示:

public int i;
public Form2(ref int x)
{
InitializeComponent();
i = x;
}

然后我将 Form2 上的变量 i 设置为值 2 并关闭 Form2。现在我希望 Form1 上的变量 i 的值为 2(因为传递参数的“ref”关键字),但该值仍然是 1。我做错了什么,为什么 ref 关键字在我的示例中不起作用?

谢谢

最佳答案

实际发生了什么。

  1. 您创建一个对象 1,其中包含一个名为“i”的整数成员
  2. 您将对“i”的引用传递给新的对象构造函数。对“i”的引用称为“x”。
  3. 将“x”的值复制到第二个对象(也称为“i”)中的变量中。
  4. 您退出 object2 的构造函数。对 object1.i 的引用到此结束。
  5. 您修改了 object2.i(它是 object1.i 的副本,但不是引用、指针或链接)。 object1.i 没有被修改。

有很多方法可以完成您想要的,可以使用事件,也可以通过传入将在 object1 和 object2 之间共享的对象。

Class Form1
{
Object i = new Object();
...
public void DoSomething()
{
Form2 f = new Form2(i);
f.Show();
}
}

这可能是实现您的目标的最简单方法。

关于c# - 在两个Form之间通过引用传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1454298/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com