gpt4 book ai didi

C# 等效于 Actionscript 的函数应用和调用?

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

我只是好奇,在 AS3 中我可以使用方法 apply 和 call,如下所示:

aFn.apply( thisObj, arrayOfArgs );

aFn.call( thisObj, a, b, c );

在 C# 中是否有等效的语法?

最好不使用反射。

感谢阅读。

最佳答案

不完全是。给定一个特定的实例方法,比如 Object#Equals您可以使用 Delegate.CreateDelegate创建一个“开放”委托(delegate)。这将取消绑定(bind)“this”参数。不幸的是,它不会调用 Equals 的特定实现,它会调用 thisclass 实现。因为 Object#Equals 是一个 virtual 方法。

一旦你有了你的开放委托(delegate),你就可以使用动态调用。 应用,但数组中的第一个元素是 this。

你可以这样做::

var @this = new { a = 3, b = 4 };
var other = new { a = 3, b = 4 };
Func<object, object, bool> equalFn = Delegate.CreateDelegate(
typeof(Func<object, object, bool>),
typeof(object).GetMethod("Equals",
System.Reflection.BindingFlags.Public |
System.Reflection.BindingFlags.Instance)) as Func<object, object, bool>;
equalFn.Invoke(@this, other); // call example
equalFn.DynamicInvoke(new[] { @this, other }); // apply example

开放代表非常有用。如果您知道自己的类型,我真的不能推荐 DynamicInvoke 的良好用途。

关于C# 等效于 Actionscript 的函数应用和调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19546986/

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