产生IList返回类型

Ric*_*rdo 3 c# ienumerable ilist yield

我必须实现一个序列化/反序列化类,我正在使用System.Xml.Serialization.我有一些IList<Decimal>类型属性,并希望序列化IList<string>解码属于列表的所有十进制值与特定的文化信息.例如10,10,00有意大利文化信息,但10.00有英文文化信息.我试着这样做:

public IList<string> method()
    {
        for (int i = 0; i < 1000; i++)
        {
            yield return i.ToString();
        }
    }   
Run Code Online (Sandbox Code Playgroud)

但我得到编译时错误33

The body of 'Class1.method()' cannot be an iterator block because 'System.Collections.Generic.IList<string>' is not an iterator interface type
Run Code Online (Sandbox Code Playgroud)

如果我使用IEnumerable<string>它作为属性类型它成功地工作但是很明显我不能改变我想要序列化的数据类型.

任何帮助表示赞赏.

Dan*_*rth 7

yield仅适用于IEnumerable<T>,IEnumerable,IEnumerator<T>IEnumerator为返回类型.
在您的情况下,您需要使用常规方法:

public IList<string> method()
{
    var result = new List<string>();
    for (int i = 0; i < 1000; i++)
    {
        result.Add(i.ToString());
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

想一想.您的代码将允许您编写以下代码:

method().Add("foo");
Run Code Online (Sandbox Code Playgroud)

这没有多大意义,是吗?