gpt4 book ai didi

c# - 将类/实例函数作为函数中的参数传递

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

在 C# 中是否可以将类函数(非静态)作为函数中的参数传递?

由于某种原因,我在函数下载中遇到编译错误,因为我将“类/实例”函数作为参数传递。

例如:

public class MyPlane {
Texture texture;

virtual public void OnDownloadPlaneCallBack(WWW www) {
// perform custom actions when/if file downloads correctly
texture = www.texture;
}

virtual public void download() {
Downloader.download("www.blah.com", OnDownloadPlaneCallBack); // this gives a compile error?
}
}

public class Downloader {

public static IEnumerator download(string url, Delegate callback) {
WWW www = new WWW(url);

while(!www.isDone)
yield return www;

if (www.isDone) {
callback.DynamicInvoke(www);
}
}
}

最佳答案

当然,您可以从实例方法构造委托(delegate):这是一个非常强大的功能。您看到的问题与创建委托(delegate)的特定语法有关 - 通过使用方法组

你会得到一个编译错误,因为方法组(这是从“裸”方法名称构造委托(delegate)的官方名称)不能作为“无类型”的参数传递 Delegate秒。

如果您更改 download 的签名接受方法Action<WWW> ,您的代码将正确编译。您还可以显式转换您的方法组,如下所示:

Downloader.download("www.blah.com", (Action<WWW>)OnDownloadPlaneCallBack);

关于c# - 将类/实例函数作为函数中的参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11605918/

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