public static CheckInfo GetInfo(string channelInfo, string cstcode,string province)
        {
            XElement xmlPage = XElement.Parse(channelInfo);
            Hashtable channel = new Hashtable();
            List<string> lChinese = new List<string>();
            List<string> lEnglish = new List<string>();
            List<string> lPhone = new List<string>();
            string[] blockNumber = null;
            string[] blockChinese = null;
            string[] blockEnglish = null;
            string[] checkNumber = null;
            string[] checkChinese = null;
            string[] checkEnglish = null;
            string[] tcheckEnglish = null;
            string[] tcheckPhone = null;
            string[] tcheckChinese = null;
            CheckInfo check = null;
            
            try
            {
                string[] longphone = xmlPage.Descendants("sms").Select(s => s.Element("sms_number").Value).ToArray();
                string[] receivequery = xmlPage.Descendants("sms").Select(s => s.Element("sms_content").Value).ToArray();
                for (int i = 0; i < longphone.Length; i++)
                {
                    if (!channel.ContainsKey(longphone[i]))
                    {
                        channel.Add(longphone[i], receivequery[i]);
                    }
                }
            }
            catch (Exception e)
            {                Console.WriteLine(e.Message.ToString());
            }
                        if (xmlPage.Element("sms_block").HasElements)
            {
                    try
                    {
                        var arryNumber = xmlPage.Element("sms_block").Element("block_number").Elements("keyword").Select(s => s.Value).ToArray();
                        var arrayChinese = xmlPage.Element("sms_block").Element("block_chinese").Elements("keyword").Select(s => s.Value).ToArray();
                        var arrayEnglish = xmlPage.Element("sms_block").Element("block_english").Elements("keyword").Select(s => s.Value).ToArray();
                         blockNumber = arryNumber;
                         blockChinese = arrayChinese;
                         blockEnglish = arrayEnglish;
                    }
                    catch (Exception e)
                    {
                        blockNumber = new string[0];
                        blockChinese = new string[0];
                        blockEnglish =new string[0];
                        Console.WriteLine(e.Message.ToString());
                    }
                    StreamReader sr = null;                    if (cstcode.Equals("1"))
                    {
                        sr = new StreamReader(@"d:\\text1.xml", Encoding.Default);
                        string xml = sr.ReadToEnd();                        XElement xmlBlockPage = XElement.Parse(xml);
                        var set = xmlBlockPage.Elements("finfo").Select(e => new
                        {
                            longhone = e.Element("longphone").Value,
                            receiveQuery = e.Element("receivequery").Value,
                            fenglish = e.Elements("block_english").Select(s => s.Value).ToArray(),
                            fchinese = e.Elements("block_chinese").Select(s => s.Value).ToArray(),
                            fphone = e.Elements("block_number").Select(s => s.Value).ToArray()
                        }).ToList();
                        var tset = xmlBlockPage.Elements("yidong").Select(e => new
                        {
                            tfenglish = e.Elements("block_english").Select(s => s.Value).ToArray(),
                            tfchinese = e.Elements("block_chinese").Select(s => s.Value).ToArray(),
                            tfphone = e.Elements("block_number").Select(s => s.Value).ToArray()
                        }).ToList();
                        foreach (var item in set)
                        {
                            if (channel.ContainsKey(item.longhone))
                            {                                lEnglish.AddRange(item.fenglish);
                                lChinese.AddRange(item.fchinese);
                                lPhone.AddRange(item.fphone);                            }
                        }
                        foreach (var item1 in tset)
                        {
                            tcheckEnglish = item1.tfenglish;
                            tcheckChinese = item1.tfchinese;
                            tcheckPhone = item1.tfphone;
                        }
                    }
                    else
                    {
                        sr = new StreamReader(@"d:\\text2.xml", Encoding.Default);
                        string xml = sr.ReadToEnd();                        XElement xmlBlockPage = XElement.Parse(xml);
                        var set = xmlBlockPage.Elements("finfo").Select(e => new
                        {
                            longhone = e.Element("longphone").Value,
                            receiveQuery = e.Element("receivequery").Value,
                            fenglish = e.Elements("block_english").Select(s => s.Value).ToArray(),
                            fchinese = e.Elements("block_chinese").Select(s => s.Value).ToArray(),
                            fphone = e.Elements("block_number").Select(s => s.Value).ToArray()
                        }).ToList();
                        var tset = xmlBlockPage.Elements("liantong").Select(e => new
                        {
                            tfenglish = e.Elements("block_english").Select(s => s.Value).ToArray(),
                            tfchinese = e.Elements("block_chinese").Select(s => s.Value).ToArray(),
                            tfphone = e.Elements("block_number").Select(s => s.Value).ToArray()
                        }).ToList();
                        foreach (var item in set)
                        {
                            if (channel.ContainsKey(item.longhone))
                            {
                                lEnglish.AddRange(item.fenglish);
                                lChinese.AddRange(item.fchinese);
                                lPhone.AddRange(item.fphone);
                            }
                        }
                        foreach (var item in tset)
                        {
                            tcheckEnglish = item.tfenglish;
                            tcheckChinese = item.tfchinese;
                            tcheckPhone = item.tfphone;
                        }                    }
                    checkNumber = lPhone.ToArray();
                    checkEnglish = lEnglish.ToArray();
                    checkChinese = lChinese.ToArray();
                    sr.Close();                    try
                    {
                        if (tcheckEnglish.Count() > 0)
                        {
                            Array.Resize(ref checkEnglish, checkEnglish.Length + tcheckEnglish.Length);
                            Array.Copy(tcheckEnglish, 0, checkEnglish, checkEnglish.Length - tcheckEnglish.Length, tcheckEnglish.Length);
                        }
                        if (tcheckChinese.Count() > 0)
                        {
                            Array.Resize(ref checkChinese, checkChinese.Length + tcheckChinese.Length);
                            Array.Copy(tcheckChinese, 0, checkChinese, checkChinese.Length - tcheckChinese.Length, tcheckChinese.Length);
                        }
                        if (tcheckPhone.Count() > 0)
                        {
                            Array.Resize(ref checkNumber, checkNumber.Length + tcheckPhone.Length);
                            Array.Copy(tcheckPhone, 0, checkNumber, checkNumber.Length - tcheckPhone.Length, tcheckPhone.Length);
                        }
                    }
                    catch (Exception e)
                    {                        Console.WriteLine(e.Message.ToString());
                    }
                    string filename = "";
                    if (filename == "1")
                    {
                        filename = "YiDong";
                    }
                    else
                    {
                        filename = "LianTong";
                    }
                    if (!File.Exists(@"d:\\" + filename + "NewBoxResult.txt"))
                    {
                        FileStream fs = File.Create(@"d:\\" + filename + "NewBoxResult.txt");
                        fs.Close();
                         check = CheckData.Check(blockNumber, blockChinese, blockEnglish, checkNumber, checkChinese, checkEnglish, province, filename);
                    }
                    else
                    {                         check = CheckData.Check(blockNumber, blockChinese, blockEnglish, checkNumber, checkChinese, checkEnglish, province, filename);
                        
                    }                    return check;
                    
                }
            }上面的代码报错。。“TestXML.CheckData.GetInfo(string, string, string)”: 并非所有的代码路径都返回值
这是怎么回事呢?

解决方案 »

  1.   

    你定义了一个CheckInfo
    可是却没有返回这类型的值
      

  2.   

    if (xmlPage.Element("sms_block").HasElements)
                {

    return
    }else -----此分支没有return
      

  3.   

    你自己看一下public static CheckInfo GetInfo(string channelInfo, string cstcode,string province)
    {
                          //这里忽略你的其它代码
          return check;
                        
        }   //那这个括号是不是有其它配对括号    //如果括号配对没错那这个return是不是应该在这里(这个红色括号后)?
    }
      

  4.   

    方法体最后加一句
    return null;
      

  5.   

        
                        }                    return check;
                        
                    }
    return ……}
    还有你这个代码行数过多,建议拆分提高阅读性 还有注释
      

  6.   

    public static CheckInfo GetInfo(string channelInfo, string cstcode,string province)if (xmlPage.Element("sms_block").HasElements)
    {
       return check;
    }
    return null;
    你忘了在最外层的if语句外加return
      

  7.   

      在最后一个大括号前面加一个 return null
      

  8.   

    你的 
       if (xmlPage.Element("sms_block").HasElements)
    条件不成立的话,程序没有返回值的(return check;根本不会执行)可以将Return Check; 这句话移到方法的结尾,最后一个 } 前面!
      

  9.   

    有分支的话,不能只在if里面return
    你的            if (xmlPage.Element("sms_block").HasElements)
                {
                        try
    中有return,而没写对应的else,所以你要把return放到if外面就可以了
      

  10.   

    if (xmlPage.Element("sms_block").HasElements)
                {
    }
    这里有返回值  但是else没有返回值 谢谢
      

  11.   

    在最后加一个 return null;好了。
      

  12.   

    赞同 
    不过楼主代码确实写的比较乱  try catch 居然用了N次
      

  13.   

    return语句在 if (xmlPage.Element("sms_block").HasElements)子句中,else的情况无返回
      

  14.   

     return check;
    放在最后一个“}”前,分支语句可能没有返回值~
      

  15.   

     if (xmlPage.Element("sms_block").HasElements)
    如果这个为FALSE
    那么就没有任何返回语句