当前位置:  开发笔记 > 编程语言 > 正文

并非所有代码路径都返回值C#?

如何解决《并非所有代码路径都返回值C#?》经验,为你挑选了2个好方法。

这是我的代码:

public String[] readXML(String filename)  
{  
    XmlReader xmlReader = XmlReader.Create(@filename);  
    List names = new List();
    String[] keywords = null;
    while (xmlReader.Read())  
    {  
        //Keep reading  
        if (xmlReader.Name.Equals("Keyword") && (xmlReader.NodeType == XmlNodeType.Element))  
        {  
            // get attribute from the Xml element here  
            string keywords = xmlReader.GetAttribute("name");  
            names.Add(keywords);  
            String[] keywordsArray = names.ToArray();  
        }  
        else
        {
            MessageBox.show("An Error Occured");
        }
    }  
    return keywordsArray;
}

这会吗?有人可以测试一下吗?



1> FrustratedWi..:

我认为这是因为你的return语句在if循环中.如果循环从不执行,或者if永远不是真的,会发生什么?



2> okutane..:

你了解自己的代码吗?你想从这个方法返回什么?目前您的代码意味着:
读取XML文件,直到找不到"Keyword"元素.找到"Keyword"元素后,取其值为"name"的属性并将其包装回一个元素数组中.
正如其他人所提到的那样,XML文档可能没有元素.在这种情况下,您将退出循环而不返回任何值.你应该决定在这种情况下该做什么.您可以返回一些特殊值,如"null"或空数组.或者,如果您确定指定的XML文档中至少应存在一个"关键字"元素,那么您可以从方法的末尾抛出一些异常,以指示违反了某些先决条件.
我想你已经尝试用不同的行为编写方法.我相信你的意思是:
读取XML文件并从所有"关键字"元素中收集"name"属性的值,并将收集的值作为字符串数组返回.
这将更有意义,在这种情况下,即使XML文件不包含任何"关键字"元素,您也总会得到一些结果.要实现此类行为,您应该将列表移动到数组转换并将语句返回到方法的末尾.你会得到这样的代码:

public static String[] readXML(String filename)
{
    using(XmlReader xmlReader = XmlReader.Create(@filename))
    {
        List names = new List();
        while(xmlReader.Read())
        {
            //Keep reading  
            if(xmlReader.Name.Equals("Keyword") && (xmlReader.NodeType == XmlNodeType.Element))
            {
                // get attribute from the Xml element here  
                string keywords = xmlReader.GetAttribute("name");
                names.Add(keywords);
            }
        }
        String[] keywordsArray = names.ToArray();
        return keywordsArray;
    }
}

请注意,我还在"使用"块中包含了已创建的XmlReader的使用,以确保在我们离开方法之前将其处理掉.

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有