gpt4 book ai didi

c# - 在分配给事件期间是否复制委托(delegate)?

转载 作者:行者123 更新时间:2023-11-30 22:46:15 25 4
gpt4 key购买 nike

以下代码似乎多次执行 FileRetrieved 事件。我认为委托(delegate)是一种引用类型。我原以为这会执行一次。我要猜测并说引用是按值传递的,因此被复制了,但我不喜欢猜测 :-)

public delegate void DirListEvent<T>(T dirItem);

void Main()
{
DirListEvent<string> printFilename = s => {
Console.WriteLine (s);
};

var obj = new DirectoryLister();

obj.FileRetrieved += printFilename;
obj.FileRetrieved += printFilename;

obj.GetDirListing();
}

public class DirectoryLister {

public event DirListEvent<string> FileRetrieved;


public DirectoryLister() {
FileRetrieved += delegate {};
}

public void GetDirListing() {

foreach (var file in Directory.GetFiles(@"C:\"))
{
FileRetrieved(file);
}
}
}

最佳答案

实际上,FileRetrieved 是委托(delegate)的集合,同一个委托(delegate)可以多次出现在这个集合中。并非所有的集合都是集合......

关于c# - 在分配给事件期间是否复制委托(delegate)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2711735/

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