“并非所有的代码路径都返回值”大家来帮帮忙啦~~

yinsuxia 2011-04-13 04:59:42

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)”: 并非所有的代码路径都返回值
这是怎么回事呢?
...全文
125 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
MOTA 2011-04-14
  • 打赏
  • 举报
回复
if (xmlPage.Element("sms_block").HasElements)
如果这个为FALSE
那么

就没有任何返回语句
休闲中 2011-04-13
  • 打赏
  • 举报
回复
return check;
放在最后一个“}”前,分支语句可能没有返回值~
matrixcl 2011-04-13
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wt_sanlian 的回复:]

引用 6 楼 zjailanzj 的回复:
还有你这个代码行数过多,建议拆分提高阅读性 还有注释


.....
[/Quote]

兄弟你点点点是有异议妈?6楼说的很正确
matrixcl 2011-04-13
  • 打赏
  • 举报
回复
return语句在 if (xmlPage.Element("sms_block").HasElements)子句中,else的情况无返回
hitlcyu19 2011-04-13
  • 打赏
  • 举报
回复
这个。。。哎 有点乱
zhaoyycit 2011-04-13
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 falconfei 的回复:]
在最后加一个 return null;好了。
[/Quote]
赞同
不过楼主代码确实写的比较乱 try catch 居然用了N次。。。
极地_雪狼 2011-04-13
  • 打赏
  • 举报
回复
在最后加一个 return null;好了。
zhaoyycit 2011-04-13
  • 打赏
  • 举报
回复
if (xmlPage.Element("sms_block").HasElements)
{
}
这里有返回值 但是else没有返回值 谢谢
xiongxyt2 2011-04-13
  • 打赏
  • 举报
回复
有分支的话,不能只在if里面return
你的 if (xmlPage.Element("sms_block").HasElements)
{
try
中有return,而没写对应的else,所以你要把return放到if外面就可以了
wt_sanlian 2011-04-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zjailanzj 的回复:]
还有你这个代码行数过多,建议拆分提高阅读性 还有注释
[/Quote]

.....
孤独的行者牛 2011-04-13
  • 打赏
  • 举报
回复
你的
if (xmlPage.Element("sms_block").HasElements)
条件不成立的话,程序没有返回值的(return check;根本不会执行)

可以将Return Check; 这句话移到方法的结尾,最后一个 } 前面!
haojuntu 2011-04-13
  • 打赏
  • 举报
回复
在最后一个大括号前面加一个 return null
蛤十一 2011-04-13
  • 打赏
  • 举报
回复
public static CheckInfo GetInfo(string channelInfo, string cstcode,string province)

if (xmlPage.Element("sms_block").HasElements)
{
return check;
}
return null;
你忘了在最外层的if语句外加return
wangting0613 2011-04-13
  • 打赏
  • 举报
回复
返回类型不是定义的类型吧,,
zjailanzj 2011-04-13
  • 打赏
  • 举报
回复

}

return check;



}
return ……}
还有你这个代码行数过多,建议拆分提高阅读性 还有注释
ldq67123 2011-04-13
  • 打赏
  • 举报
回复
方法体最后加一句
return null;
porschev 2011-04-13
  • 打赏
  • 举报
回复
你自己看一下

public static CheckInfo GetInfo(string channelInfo, string cstcode,string province)
{


//这里忽略你的其它代码
return check;



} //那这个括号是不是有其它配对括号

//如果括号配对没错。。。那这个return是不是应该在这里(这个红色括号后)?
}
anbam 2011-04-13
  • 打赏
  • 举报
回复
if (xmlPage.Element("sms_block").HasElements)
{
。。。
return
}

else -----此分支没有return
hanzhehanzhe 2011-04-13
  • 打赏
  • 举报
回复
你定义了一个CheckInfo
可是却没有返回这类型的值

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧