gpt4 book ai didi

c# - 将方法存储在数组中并在 C# 中调用它们

转载 作者:太空狗 更新时间:2023-10-29 22:04:08 27 4
gpt4 key购买 nike

在 javascript 中我们可以这样做:

var arr = [];

function fooBar() {
console.log('Hello World');
}

arr[0] = fooBar;

arr[0]();

基本上每个函数都是一个真实的对象,如果我愿意,我可以将它们存储在一个数组中。我的问题是,由于 C# 没有指针,处理这种情况的最佳方法是什么?我的意思是如何将函数引用存储到数组中?

我知道我们有一个叫做委托(delegate)的东西,但我不确定这是否适合这项任务......

最佳答案

代表正是您所需要的:

var list = new List<Action>();

...

void fooBar() {
....
}

...

list.Add(fooBar);

Action 实际上只是一个 delegate ,只要看看它的定义,你就会发现它类似于一个不期望也不返回任何东西的委托(delegate)。如果您想传递参数,请使用它的任何通用版本,例如 Action<T> .如果您还需要添加返回某些内容的方法,请使用 Func -委托(delegate)代替。

编辑:每个委托(delegate)都有自己的类型,所以你不能混合它们并将它们放在一个集合中,除非你使用类型为 Delegate 的集合。 :

var list = new List<Delegate>();

在这种情况下,您不能使用大括号调用 实际委托(delegate),而必须使用DynamicInvoke。并根据代表签名传递参数。

list[0].DynamicInvoke(args);

关于c# - 将方法存储在数组中并在 C# 中调用它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42159436/

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