gpt4 book ai didi

c# - 如何从事件中返回 List

转载 作者:行者123 更新时间:2023-11-30 17:01:08 25 4
gpt4 key购买 nike

我有一个这样的自定义委托(delegate):

public delegate List<int> ExpandableChildrenGetterDelegate(string parentId);

我从这个代表那里得到的事件是:

public event ExpandableChildrenGetterDelegate ExpandableChildrenGetting;

但 Visual Studio 设计器无法为此操作生成方法。我必须将我的代表更改为:

public delegate IEnumerable ExpandableChildrenGetterDelegate(string parentId);

我如何解决这个问题,我明确地写了 List<int>代替 IEnumerable

最佳答案

这里的问题是 Visual Studio 试图合理化 List<int> 的 N 个副本。它需要从事件中返回。每个接收值的处理程序中的一个。因此它默认为非泛型的 C# 1.0 行为 IEnumerable .

从事件中获取此类信息的最佳方式是将其作为 EventArgs 的一部分执行。然后每个处理程序都可以直接附加到它

class MyEventArgs : EventArgs {
public List<int> ExpandableChildren = new List<int>();
}

public delegate void ExpandableChildrenGetterDelegate(
string parentId,
MyEventArgs e);

事件的消费者只需编辑事件参数中的列表,而不是返回一个新的

关于c# - 如何从事件中返回 List<int>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21397270/

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