Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在UML序列图中描述C#yield return?_C#_Uml_Yield - Fatal编程技术网

如何在UML序列图中描述C#yield return?

如何在UML序列图中描述C#yield return?,c#,uml,yield,C#,Uml,Yield,比如说, using System; using System.Collections; namespace ConsoleApplication { class A : IEnumerable { B b; public A() { b = new B(); } public IEnumerator GetEnumerator() {

比如说,

using System;
using System.Collections;

namespace ConsoleApplication
{
    class A : IEnumerable
    {
        B b;
        public A()
        {
            b = new B();
        }
        public IEnumerator GetEnumerator()
        {
            yield return b.FunA(0);
            yield return b.FunB(1);
            yield return b.FunC(2);
            yield return b.FunD(3);
            yield return b.FunE(4);
        }
    }

    class B
    {
        public int FunA(int x)
        {
            return x;
        }
        public int FunB(int x)
        {
            return x * 2;
        }
        public int FunC(int x)
        {
            return x * 3;
        }
        public int FunD(int x)
        {
            return x * 4;
        }
        public int FunE(int x)
        {
            return x * 5;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var a = new A();
            foreach(var number in a)
            {
                Console.WriteLine(number);
            }
            Console.ReadLine();
        }
    }
}
如何在序列图中描述这个程序? 我认为它应该类似于下面的循环或alt部分

+------------+ +------------+ +------------+ | Program | | A | | B | +-----+------+ +------+-----+ +------+-----+ | | | | | | | | | | | | +-----+--------------------------------------------------------------+ |loop | | [0] | | | +-----+ | | | | | | | | | | | | | | | | | | | +--------------------------------------------------------------------+ | | [1] | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------------------------------------+ | | [2] | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------------------------------------+ | | [3] | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------------------------------------+ | | [4] | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------------------------------------+ | | | | | | +------------+ +------------+ +------------+ |计划A | B| +-----+------+ +------+-----+ +------+-----+ | | | | | | | | | | | | +-----+--------------------------------------------------------------+ |循环| |[0]| || +-----+ | | | | | | | | | | | | | | | | | | | +--------------------------------------------------------------------+ | | [1] | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------------------------------------+ | | [2] | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------------------------------------+ | | [3] | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------------------------------------+ | | [4] | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------------------------------------+ | | | | | | 编辑:
我正在分析Unity3D插件的源代码。IEnumerator和yield用于实现协同程序模型。协同程序用作线程的替代方案。因此,在序列图中显示协同路由的逻辑部分是合理的。

对于序列图,您可以定义循环(while loop),只要涉及到yield关键字的执行,请参考下面的链接


我认为此链接将帮助您理解为什么收益率可以表示为循环。

我个人不这么认为。序列图更适合于对象之间交互的一系列步骤。如果这些步骤只是同一动作的重复,在一系列值中迭代,那么对我来说似乎没有什么用处。@PeterDuniho也许最好澄清一下,我正在阅读一些用Unity3D编写的代码。IEnumerator和yield用于实现协同程序模型。协同程序用作线程的替代方案。因此,说这些步骤只是我将与@PeterDuniho一起执行的相同操作的重复是不恰当的。在大多数情况下,以图形方式描述代码没有任何附加值。SDs应用于通信概述。代码更好地描述算法。尽量减少SDs中区域的使用@ThomasKilian SDs应用于通信概述。是的,我的意思是向其他人解释源代码,展示类的交互很重要。类的交互不是程序逻辑。以图形方式绘制for循环。这不是一个概述,而是一个算法的描述。