c#、.net、委托、异步回调。我做错了什么?
这里有一个小类,用于游戏菜单中的按钮 我希望在实例化每个按钮时能够传递一个委托方法\u triggerMethod。然后,当调用按钮实例触发器方法时,将调用该委托方法 我第一次在这里试用C#中的代表。就我解释文档而言,我所做的应该是可行的,但是VisualStudio在触发器方法中给了我一个编译错误 根据msdn文章,调用委托的代码不需要知道原始方法参数等。我做错了什么? 在msdn的文章中,他们只输入了“Del”,这对我来说并不适用。我必须键入“Delegate”,这是一个奇怪的字符c#、.net、委托、异步回调。我做错了什么?,c#,.net,delegates,C#,.net,Delegates,这里有一个小类,用于游戏菜单中的按钮 我希望在实例化每个按钮时能够传递一个委托方法\u triggerMethod。然后,当调用按钮实例触发器方法时,将调用该委托方法 我第一次在这里试用C#中的代表。就我解释文档而言,我所做的应该是可行的,但是VisualStudio在触发器方法中给了我一个编译错误 根据msdn文章,调用委托的代码不需要知道原始方法参数等。我做错了什么? 在msdn的文章中,他们只输入了“Del”,这对我来说并不适用。我必须键入“Delegate”,这是一个奇怪的字符 clas
class MenuItem
{
private Rectangle clickArea;
private string displayText;
private Vector2 _position;
private Delegate _triggerMethod;
public MenuItem(Vector2 pos,string txt,Delegate trig)
{
displayText = txt;
_position = pos;
_triggerMethod = trig;
}
public void Draw(SpriteBatch sb)
{
}
public void Select()
{
}
public void DeSelect()
{
}
public void IsMouseOnMe()
{
}
public void Trigger()
{
_triggerMethod();
}
}
如果要使用
Del
类型,则需要定义该类型:
public delegate void Del(string message);
public class MenuItem
{
private Del _triggerMethod;
public void Trigger()
{
_triggerMethod("Message");
}
}
请注意,您可以使用内置的操作
委托类型,而不是定义自己的委托类型:
Action<string> _triggerMethod;
_triggerMethod("Message");
如果要使用
Del
类型,则需要定义该类型:
public delegate void Del(string message);
public class MenuItem
{
private Del _triggerMethod;
public void Trigger()
{
_triggerMethod("Message");
}
}
请注意,您可以使用内置的操作
委托类型,而不是定义自己的委托类型:
Action<string> _triggerMethod;
_triggerMethod("Message");
您尚未创建任何委托定义 示例(来自您链接的MSDN页面): 然后,您需要将其用作您的类型:
** snip **
private Del _triggerMethod;
public MenuItem(Vector2 pos,string txt,Del trig)
{
displayText = txt;
_position = pos;
_triggerMethod = trig;
}
** snip **
public void Trigger()
{
_triggerMethod("some message");
}
您可以传递委托的引用,而不知道它需要什么参数(因为它只是一个普通的引用),但是当您想要调用它时,您确实需要为它提供正确的参数。您还没有创建任何委托定义 示例(来自您链接的MSDN页面): 然后,您需要将其用作您的类型:
** snip **
private Del _triggerMethod;
public MenuItem(Vector2 pos,string txt,Del trig)
{
displayText = txt;
_position = pos;
_triggerMethod = trig;
}
** snip **
public void Trigger()
{
_triggerMethod("some message");
}
您可以传递委托的引用,而不知道它需要什么参数(因为它只是一个普通的引用),但是当您想要调用它时,您确实需要为它提供正确的参数。“需要方法、委托或事件”。。特别是在这里_triggerMethod();此外,当我尝试调试它时,我得到的名称“TriggerMethod”在当前上下文“预期的方法、委托或事件”中不存在。。特别是在这里_triggerMethod();此外,当我尝试调试它时,我得到的名称“TriggerMethod”在当前上下文中不存在