gpt4 book ai didi

c# - 如何在C#中使用匿名接口(interface)回调方法作为参数?

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

<分区>

在 Java 中,我能够执行以下操作:

Java

public class Button {
private Callback callback;

public Button(Callback callback) {
this.callback = callback;
}

public void update() {
// Check if clicked..
callback.onClick(this);
}

public interface Callback {
public void onClick(Button Button);
}
}

像这样使用它:

Button b = new Button(new Callback() {
@Override
public void onClick(Button b) {
System.out.println("Clicked");
}
});

我想知道,在 (Unity) C# 中是否也可以做到这一点。

目前我有相同的设置,语法正确

C#:

public class Button {
private Callback callback;

public Button(Callback callback) {
this.callback = callback;
}

public void Update() {
// Check if clicked..
callback.OnClick(this);
}

public interface Callback {
void OnClick(Button button);
}
}

但是,当我在创建按钮时尝试做同样的事情时,

Button b = new Button(new Button.Callback() {
void OnClick(Button button) {
Debug.Log("Clicked");
}
});

我收到如下错误:

Unexpected symbol 'void'

error CS1526: A new expression requires () or [] after type

error CS8025: Parsing error

我已经尝试在界面中创建“虚拟”或“抽象”方法,或者在创建按钮时在 void OnClick(.. 之前添加“new”关键字,但到目前为止没有成功。

如果我从“new Button.Callback”中删除“()”,意外符号“void”错误似乎消失了

在此我将不胜感激。

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