gpt4 book ai didi

c# - 按值传递对象是否会创建文件系统观察程序的两个实例?

转载 作者:太空宇宙 更新时间:2023-11-03 19:07:08 25 4
gpt4 key购买 nike

我有 3 个类(class)。一类是我的“ worker ”类,它有一个文件系统观察器。主窗体(A 类)包含对列表 (_workerList) 中每个实例化的 Worker 对象的引用。如果我将 _workerList 传递给 B 类(这是我通过构造函数完成的)并将该列表的副本保存在 B 类中,这是否意味着我同时运行了两个文件系统观察器实例?

public partial class A : Form
{
private List<Worker> _workerList;

public A()
{
InitializeComponent();
_workerList = new List<Worker>();
}

private void button_Click(object sender, EventArgs e)
{
_workerList.Add(new Worker()); //the worker class contains a file system watcher

using( B b = new B(_workerList))
{
b.ShowDialog();
}
}
}

public partial class B : Form
{
private List<Worker> _workerListCopy;

public B(List<Worker> originalWorkerList)
{
InitializeComponent();
_workerListCopy = new List<Worker>(originalWorkerList)
}

}

最佳答案

但也许不是出于您认为的原因。您创建了一个名为“Worker”的。这意味着它自动成为引用类型。引用类型按值传递,但作为引用(不创建副本)。

您可以更改对象本身,但对引用指向的内容的更改不会反射(reflect)到原始变量上。

这意味着因为你没有再次使用new操作符来创建一个新的Worker类,所以只创建了一个FileSystemWatcher

关于c# - 按值传递对象是否会创建文件系统观察程序的两个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25369597/

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