Jen

C# 的yield用法

最近發現一個C#存在已久的語法,

 

一般我們要回傳列舉型別物件時,我們可能會這樣寫.

public IEnumerable<test> GetRuleViolations()
{
    List<test> _li = new List<test>();
    for (int i = 0; i < 10; i++)
    {
        _li.Add(new test("obj_" + i.ToString(), i.ToString()));
    }
    return _li;
}

 

利用yield 就可以這樣寫。

public IEnumerable<test> GetRuleViolations()

{

    List<test> _li = new List<test>();

    for (int i = 0; i < 10; i++)

    {

        yield return new test("obj_" + i.ToString(), i.ToString());

    }

    yield break;

}

 

只有C# 才有喔~~~~

 

 

 

參考:

http://msdn.microsoft.com/en-us/library/9k7k7cf0(VS.80).aspx

http://stackoverflow.com/questions/231893/what-does-yield-break-do-in-c

0 意見: