taskData.onOver += MyFunction(); 提示无法将void隐式转换为TaskInputData.Over
时间: 2024-02-28 09:54:32 浏览: 60
在您的示例代码中,当您尝试将 `MyFunction()` 方法添加到 `taskData.onOver` 委托实例的调用列表中时,出现了类型不匹配的错误。这是因为 `MyFunction()` 方法返回 `void`,而 `taskData.onOver` 委托实例的类型是 `TaskInputData.Over`,它是一个不带参数和返回值的委托类型。
要将 `MyFunction()` 方法添加到 `taskData.onOver` 委托实例的调用列表中,您需要将方法名称传递给委托实例,而不是调用方法并将其结果赋给委托实例。可以像这样实现:
```csharp
TaskInputData taskData = new TaskInputData();
taskData.onOver += MyFunction; // 将 MyFunction 添加到 onOver 委托实例的调用列表中
```
在此示例中,将 `MyFunction` 方法名称传递给 `taskData.onOver` 委托实例,以将其添加到调用列表中。
此外,如果您想从 `MyFunction` 方法获取返回值并将其传递给其他地方,则可以将 `TaskInputData.Over` 委托类型更改为具有返回值的委托类型。例如:
```csharp
public class TaskInputData {
public string name;
public delegate int Over(); // 更改委托类型以具有返回值
public Over onOver; // 声明一个委托类型的实例
}
public class Example {
void Start() {
TaskInputData taskData = new TaskInputData();
taskData.onOver += MyFunction; // 将 MyFunction 添加到 onOver 委托实例的调用列表中
// 获取 MyFunction 的返回值并将其传递给其他地方
int result = taskData.onOver();
}
int MyFunction() {
// 实现需要执行的代码
return 0; // 返回一个整数
}
}
```
在此示例中,`TaskInputData.Over` 委托类型被更改为具有返回值的委托类型。这样,您可以从 `MyFunction` 方法获取返回值,并将其传递给其他地方。
阅读全文