需要有关方法的帮助

时间:2013-07-25 19:11:50

标签: c# string methods input output

我刚刚开始学习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(字符串,输出字符串)':并非所有代码路径返回价值。" 我做错了什么?

3 个答案:

答案 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;

    }