C# 将一个方法作为参数传递给另一个方法
我有一个在发生异常时调用的方法:
public void ErrorDBConcurrency(DBConcurrencyException e)
{
MessageBox.Show("You must refresh the datasource");
}
我想做的是将此函数传递给一个方法,因此如果用户单击“是”,则调用该方法,例如,
public void ErrorDBConcurrency(DBConcurrencyException e, something Method)
{
if (MessageBox.Show("You must refresh the datasource") == DialogResult.OK)
Method();
}
如果是这种情况,该方法可能有参数,也可能没有参数我也想通过它们。
我怎样才能做到这一点?
I have a method that is called when an exception occurs:
public void ErrorDBConcurrency(DBConcurrencyException e)
{
MessageBox.Show("You must refresh the datasource");
}
What i would like to do is pass this function a method so if the user clicks Yes then the method is called e.g.
public void ErrorDBConcurrency(DBConcurrencyException e, something Method)
{
if (MessageBox.Show("You must refresh the datasource") == DialogResult.OK)
Method();
}
The Method may or may not have parameters, if this is the case i would like to pass them too.
How can i acheive this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
查看 Func 和 Action 类。您可以使用以下方法来实现此目的:使用以下
方式调用它:
查看本文了解一些详细信息。如果你希望你的方法接受一个参数,请使用 Action、Action 等。如果你希望它返回一个值,请使用 Func 等。这些泛型类有很多重载。
Look into the Func and Action classes. You can achieve this using the following:
Call it using
Take a look at this article for some details. If you want your method to take a parameter, use Action, Action, etc. If you want it to return a value, use Func etc. There are many overloads of these generic classes.
您可以使用
操作
委托类型。然后你可以像这样使用它:
如果你确实需要参数,你可以使用 lambda 表达式。
You can use the
Action
delegate type.Then you can use it like this:
If you do need parameters you can use a lambda expression.
添加一个
Action
作为参数:然后你可以像这样调用它
或
Add an
Action
as parameter:and then you can call it like this
or
您需要使用委托作为参数类型。
如果
Method
返回void
,则something
为操作
、操作
、操作
等(其中 T1...Tn 是Method
的参数类型)。如果
Method
返回TR
类型的值,则something
为Func
,Func
,Func
等。You need to use a delegate as the parameter type.
If
Method
returnsvoid
, thensomething
isAction
,Action<T1>
,Action<T1, T2>
, etc (where T1...Tn are the parameter types forMethod
).If
Method
returns a value of typeTR
, thensomething
isFunc<TR>
,Func<T1, TR>
,Func<T1, T2, TR>
, etc.