0
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] | | | | | | | | | | | | | | | | | | | | | | | +--------------------------------------------------------------------+ | | | | | |
编辑: 我分析Unity3D的插件的源代码。 IEnumerator和yield用于实现协同模型。协程被用作线程的替代。因此,在序列图中显示协程的逻辑部分是合理的。
个人而言,我不会。序列图是IMHO更适合于对象之间交互的一系列步骤。对于我而言,这些步骤仅仅是重复同一个动作,并重复执行一系列值,这对我来说似乎并不有用。 – 2015-03-13 07:30:11
@PeterDuniho也许最好说清楚,我正在阅读一些在Unity3D中编写的代码。 IEnumerator和yield用于实现_coroutine_模型。 _coroutine_用作线程的替代方案。所以说说这些步骤只是我用@PeterDuniho去做的同一个动作 – zwcloud 2015-03-13 09:22:22
的重复是不合适的。在大多数情况下,用图形描述代码没有附加价值。 SD应该用于通信概述。代码描述算法要好得多。将SD中的区域使用降到最低! – 2015-03-13 11:10:11