我正在做一个测试程序,它使用包装器DLL在c ++ dll上传递.net项目。我想创建一个基于表单的示例,但文档仅显示控制台中的示例。有一个特别的部分让我最困扰。
var mgr = new Pump("localhost",1,"test");
var result = mgr.Connect();
mgr.OnStart = sender => { var sga = sender.GetAllInfo(); };
发件人意味着什么,无论如何都要重写它?
...谢谢
答案 0 :(得分:5)
您在此处看到的是lambda expression。简而言之,最后一行意味着:
为
mgr.OnStart
分配一个带有一个参数sender
的处理程序并执行给定的代码。该代码调用GetAllInfo()
对象上的sender
方法,并将结果分配给sga
变量。
你不喜欢它,为什么要重写它?
根据你的评论我假设你的问题中的代码实际上是在事件处理程序中调用的(例如一个按钮' s OnClick
evnet处理程序),它已经采用了一个名为{{1}的参数}。
在这种情况下,只需在任一位置重命名参数名称,例如:
sender
答案 1 :(得分:0)
为了增加答案,我认为将lambda与普通方法进行比较是值得的...
...
mgr.OnStart = sender => { var sga = sender.GetAllInfo(); };
...
...
mgr.OnStart = this.Mgr_Start;
...
private void Mgr_Start(object sender)
{
var sga = sender.GetAllInfo();
}
请注意,上述方法的参数类型为object
。这需要根据OnStart
代理人的签名进行更改。
...
var getDateTime = () => DateTime.Now;
var dateTime = getDateTime();
...
...
var dateTime = this.GetDateTime();
...
private DateTime GetDateTime()
{
return DateTime.Now;
}