【发布时间】:2014-10-03 16:40:52
【问题描述】:
每当我尝试运行我的脚本时,我都会收到以下错误消息 - Error 1 'AddressLookup.Form1.GetAddress(string)': not all code paths return a value。
这发生在以下代码块中:
private void SearchButton_Click(object sender, EventArgs e)
{
String addressText = GetAddress(AddressEntry.Text);
MessageBox.Show(addressText);
}
String GetAddress(String addressText)
{
var strLines = File.ReadLines("pca_mk_addresslist.csv");
foreach (var line in File.ReadLines("pca_mk_addresslist.csv"))
{
var fields = line.Split(',');
foreach (var field in fields)
{
if (field == addressText)
return field;
}
return String.Empty;
}
}
但是,使用以下代码块,一切正常,但每当我尝试查找结果时,它都会返回一个空白消息框:
private void SearchButton_Click(object sender, EventArgs e)
{
String addressText = GetAddress(AddressEntry.Text);
MessageBox.Show(addressText);
}
String GetAddress(String addressText)
{
var strLines = File.ReadLines("pca_mk_addresslist.csv");
foreach (var line in File.ReadLines("pca_mk_addresslist.csv"))
{
var fields = line.Split(',');
foreach (var field in fields)
{
if (field == addressText)
return field;
}
}
return String.Empty;
}
【问题讨论】:
-
想象一下如果没有进入循环会发生什么。
-
顺便说一句,如果字段匹配,为什么要返回 fields[1] 而不是 field ?这没有意义
-
"it returns a blank message box"- 嗯,该方法中的代码路径之一返回String.Empty。在显示String.Empty时,您是否期望出现除空白消息框之外的其他内容?在调试器中单步执行代码并检查运行时值。 -
另外,您在同一个文件上多次调用
File.ReadLines并且从不使用第一个文件是否有原因?这似乎超级浪费。