我刚刚开始学习c#,我正在尝试创建一个控制台应用程序,它将读取文本文件并在命令提示符下显示它。我也试图在单独的dll中创建读取文本文件的方法,因为我计划稍后扩展我的程序并尝试制作一种基于文本的游戏引擎。无论如何,这是我的dll中的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace EngineFeatures
{
public class txtedit
{
public string Write_txt(string textin, out String output)
{
try
{
using (StreamReader sr = new StreamReader(textin))
{
String line = sr.ReadToEnd();
output = line;
return output;
}
}
catch (Exception e)
{
Console.WriteLine("The file could not be read:");
Console.WriteLine(e.Message);
}
}
}
}
就像我是初学者一样,我刚刚开始3天前。无论如何,我想要做的是能够调用函数EngineFeatures.txtedit.Write_txt(" TXT / test.txt");在应用程序本身并让它返回一个字符串,但我仍然有点困惑,我也得到一个错误说" EngineFeatures.txtedit.Write_txt(字符串,输出字符串)':并非所有代码路径返回价值。" 我做错了什么?
答案 0 :(得分:6)
如果发生异常,您的方法不会返回任何内容。添加一些默认值以返回或向调用者抛出(另一个)异常:
catch (Exception e)
{
Console.WriteLine("The file could not be read:");
Console.WriteLine(e.Message);
return null;
// or: return String.Empty
// or: throw new GameLoadException("Cannot read game file", e);
}
答案 1 :(得分:2)
您的代码中有很多内容,首先,您使用out
关键字传递变量,然后返回相同的变量。您可以删除参数列表中的out
,只需在try块中返回output
,但如果出现异常,您还应返回一些值null
,如:
编辑:您可以完全删除output
参数,然后返回该行。 (感谢@Jim)
public string Write_txt(string textin)
{
try
{
using (StreamReader sr = new StreamReader(textin))
{
String line = sr.ReadToEnd();
return line;
}
}
catch (Exception e)
{
Console.WriteLine("The file could not be read:");
Console.WriteLine(e.Message);
return null;
}
}
答案 2 :(得分:0)
public class txtedit
{
public string Write_txt(string textin, out String output)
{
output = "";
try
{
using (StreamReader sr = new StreamReader(textin))
{
String line = sr.ReadToEnd();
output = line;
return output;
}
}
catch (Exception e)
{
Console.WriteLine("The file could not be read:");
Console.WriteLine(e.Message);
}
return output;
}