C# 我不理解MSDN中的代码

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

下面的代码来自这篇MSDN文章,我不理解的是在附录B中,一直到文章的下面

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) 如果达到方法末尾或达到
产量中断
,它将发出信号,表示枚举器已运行所有元素