C# 解析csv文件时,并非所有代码路径都返回值
每当我尝试运行脚本时,都会收到以下错误消息-错误1“AddressLookup.Form1.GetAddressstring”:并非所有代码路径都返回值 以下代码块会出现这种情况:C# 解析csv文件时,并非所有代码路径都返回值,c#,csv,C#,Csv,每当我尝试运行脚本时,都会收到以下错误消息-错误1“AddressLookup.Form1.GetAddressstring”:并非所有代码路径都返回值 以下代码块会出现这种情况: private void SearchButton_Click(object sender, EventArgs e) { String addressText = GetAddress(AddressEntry.Text); MessageBox.Show(addre
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;
}
}
但是,对于以下代码块,一切正常,但每当我尝试查找结果时,它都会返回一个空白messagebox:
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;
}
如果文件pca_mk_addresslist.csv为空,则永远不会在空集合中输入foreach循环,foreach对象的迭代次数为零。因此,由于只在循环中返回,因此空文件的情况下不会返回任何内容。这是不允许的
if pca_mk_addresslist.csv has any lines
return something
else
?
您需要告诉它您的默认值应该是什么。它可能是空的,但你必须告诉它。编译器的工作不是假设您希望程序做什么。只是为了让你更容易写
至于你的第二个问题,看起来你的文件实际上是空的。要么就是没有匹配的字段。您可能希望添加一些更好的默认文本,或者逐步浏览程序以发现它是什么
编辑:
根据评论,你想要的更像
private String GetAddress(String addressText)
{
var strLength = File.ReadAllLines("pca_mk_addresslist.csv");
var strLines = File.ReadLines("pca_mk_addresslist.csv");
foreach (var line in strLines)
{
var fields = line.Split(',');
foreach (var field in fields)
{
if (field == addressText)
return field;
}
}
return null;
}
想象一下,如果循环从未被输入会发生什么。顺便说一句,如果字段匹配,为什么返回字段[1]而不是字段?返回一个空白消息框是没有意义的——好吧,该方法中的一个代码路径返回String.Empty。当显示String.Empty时,您是否希望看到除空白消息框之外的其他内容?在调试器中逐步检查代码并检查运行时值。另外,是否有原因导致您在同一文件上多次调用File.ReadLines,而从不使用第一个文件?这看起来太浪费了。哈格恩-谢谢,我尝试了以下步骤,但一直收到错误消息,这不是很明智。只需在后面添加else的内容,无条件。“我在打电话,所以我不能给你看,但是是的。”我在应该是什么样的情况下加上了玛土撒拉。但是请确保在使用之前理解代码,因为返回null在这里确实意味着什么,正如我所说的,您的文件可能实际上是空的,所以请准备好接受并利用null提供的信息。