C# 我不理解MSDN中的代码
下面的代码来自这篇MSDN文章,我不理解的是在附录B中,一直到文章的下面C# 我不理解MSDN中的代码,c#,msdn,yield,C#,Msdn,Yield,下面的代码来自这篇MSDN文章,我不理解的是在附录B中,一直到文章的下面 private IEnumerator<ITask> OnStartup() { rst4.ServiceTutorial4State state = null; yield return Arbiter.Choice( _clockPort.Get(GetRequestType.Instance), delegate(rst4.ServiceTutorial4
private IEnumerator<ITask> OnStartup()
{
rst4.ServiceTutorial4State state = null;
yield return Arbiter.Choice(
_clockPort.Get(GetRequestType.Instance),
delegate(rst4.ServiceTutorial4State response)
{
state = response;
},
delegate(Fault fault)
{
LogError(null, "Unable to Get state from ServiceTutorial4", fault);
}
);
if (state != null)
{
ServiceTutorial6State initState = new ServiceTutorial6State();
initState.InitialTicks = state.Ticks;
PartnerType partner = FindPartner("Clock");
if (partner != null)
{
initState.Clock = partner.Service;
}
Replace replace = new Replace();
replace.Body = initState;
_mainPort.Post(replace);
}
yield return Arbiter.Choice(
_clockPort.Subscribe(_clockNotify),
delegate(SubscribeResponseType response) { },
delegate(Fault fault)
{
LogError(null, "Unable to subscribe to ServiceTutorial4", fault);
}
);
}
private IEnumerator OnStartup()
{
rst4.ServiceTutorial4State=null;
收益率仲裁者。选择(
_clockPort.Get(GetRequestType.Instance),
代表(rst4.ServiceTutorial4State响应)
{
状态=响应;
},
代表(故障)
{
日志错误(null,“无法从ServiceTutorial4获取状态”,错误);
}
);
如果(状态!=null)
{
ServiceTutorial6State initState=新ServiceTutorial6State();
initState.InitialTicks=state.Ticks;
PartnerType partner=FindPartner(“时钟”);
if(partner!=null)
{
initState.Clock=partner.Service;
}
替换=新的替换();
replace.Body=initState;
_邮政总局(更换);
}
收益率仲裁者。选择(
_clockPort.Subscribe(_clockNotify),
委托(SubscriberResponseType响应){},
代表(故障)
{
日志错误(null,“无法订阅ServiceTutorial4”,错误);
}
);
}
为什么代码有两个返回状态,它有两个yield语句,这两个语句都能工作?
如果我用愚蠢的问题浪费你的时间,我真的很抱歉,但是如果有人能回答这个问题,这就是地方
为什么代码有两个返回状态,它有两个yield语句,这两个语句都能工作
对<代码>收益返回将向请求“下一个”值的方法生成给定值。。。但是,当再次请求下一个值时,该方法将从先前生成的位置继续
您可能想阅读或了解有关它们的信息
为什么代码有两个返回状态,它有两个yield语句,这两个语句都能工作
对<代码>收益返回将向请求“下一个”值的方法生成给定值。。。但是,当再次请求下一个值时,该方法将从先前生成的位置继续
您可能想阅读或了解他们。您可以阅读:
1) 调用该方法时,将返回一个IEnumerator
2) 第一次调用枚举器的Next
方法时,它将返回第一次yield return的结果
3) 下面调用Next
方法时,它将在离开的地方“继续”执行此代码,并停止以返回以下yield return
4) 如果达到方法末尾或达到产量中断
,它将发出信号,表示枚举器已运行所有元素。您可以理解为:
1) 调用该方法时,将返回一个IEnumerator
2) 第一次调用枚举器的Next
方法时,它将返回第一次yield return的结果
3) 下面调用Next
方法时,它将在离开的地方“继续”执行此代码,并停止以返回以下yield return
4) 如果达到方法末尾或达到产量中断
,它将发出信号,表示枚举器已运行所有元素