public class TaskInputData { public string name; public delegate void Over(); } 如何给over绑定函数
时间: 2024-02-28 11:54:21 浏览: 44
要给 `over` 委托绑定函数,需要先创建一个函数,其签名必须与 `over` 委托的签名相同。在这个例子中,`over` 委托没有参数,也没有返回值,因此需要创建一个没有参数和返回值的函数。例如:
```csharp
void MyFunction() {
// Do something when the task is over
}
```
然后,可以将 `MyFunction` 函数添加到 `over` 委托的调用列表中,以便在适当的时候调用它。例如:
```csharp
TaskInputData taskData = new TaskInputData();
taskData.over += MyFunction; // 添加 MyFunction 函数到 over 委托的调用列表
```
在这个例子中,当任务完成时,可以调用 `over` 委托的调用列表,以便执行需要执行的函数。例如:
```csharp
void TaskComplete() {
// Do something to complete the task
taskData.over(); // 调用 over 委托的调用列表,以便执行添加的函数
}
```
这样,当任务完成时,将会依次执行 `over` 委托的调用列表中添加的函数。
相关问题
taskData.onOver += MyFunction(); 提示无法将void隐式转换为TaskInputData.Over
在您的示例代码中,当您尝试将 `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` 方法获取返回值,并将其传递给其他地方。
阅读全文