是否有可能并且值得使用yield优化以下代码如果是这样,如何

时间:2017-07-19 08:39:35

标签: c#

正如标题所说,是否可以通过使用yield来优化以下代码,是否值得,如果是,如何?

{{1}}

编辑:感谢您的回答!

1 个答案:

答案 0 :(得分:3)

不,你不能。 yield return只能用于实际返回某些内容的方法。你没有返回值,所以答案是否定的。

例如,这可能是yield return的应用程序,但这会改变您方法的含义:

public static IEnumerable<Setting> LoadSettings(string fileName)
{
    try
    {
        var xml = new XmlDocument();
        xml.Load(fileName);
        var userNodes = xml.SelectNodes("/settings");

        foreach (XmlNode node in userNodes)
        {
            Setting globals = new Setting();
            globals.username = node.SelectSingleNode("username").InnerText;
            globals.password = node.SelectSingleNode("password").InnerText;
            globals.rank = node.SelectSingleNode("rank").InnerText;

            yield return globals;
        }
    }
    catch
    {
        Console.WriteLine("Oops, something is wrong.");
    }
}