【发布时间】:2020-02-22 17:21:25
【问题描述】:
我希望在我的自定义 XNA GUI 中创建一个 Button 类,它接受方法作为参数,类似于在 Python 的 tkinter 中您可以设置要使用 Button.config(command = a_method) 调用的函数。
我已经阅读了有关使用委托作为参数 here、here 和 here 的信息,但我似乎离让它工作更近了一步。我不完全理解代表是如何工作的,但是我尝试了几种不同的方法都没有成功,比如使用Func<int>? command = null 以便稍后测试command 是否为null 然后我会调用预设默认值,但是然后我得到一个Func cannot be nullable type 或类似的东西。
理想情况下,代码应该是这样的:
class Button
{
//Don't know what to put instead of Func
Func command;
// accepts an argument that will be stored for an OnClick event
public Button(Action command = DefaultMethod)
{
if (command != DefaultMethod)
{
this.command = command;
}
}
}
但似乎我尝试过的一切都没有成功。
【问题讨论】:
-
什么UI框架?窗体? WPF?
-
Func<int> command = null应该可以正常工作。Func<T>是引用类型,所以不能为空。 -
@CodingGorilla - 重要吗?
-
@CodingGorilla 这将是一个 XNA 自定义 GUI
-
您是否想找出一种可以存储任何类型委托的数据类型?那是
Delegate- 但我不确定我理解为什么/如何使用这个委托,Func<int>的int返回值将代表什么?似乎Action对于 parm 和 internal 类型都可以。如果这是构造函数的参数,为什么需要不同的东西来将它存储在属性中。
标签: c#