WPF 中的记事本,System.IO.File.ReadAllText

Notepad in WPF, System.IO.File.ReadAllText

打开文本文件时遇到问题... 有这段代码,调用后从文件中有空字符串

    public string OpenTextFile ()
    {
        var stringFromFile = string.Empty;
        OpenFileDialog ofd = new OpenFileDialog();
        if (ofd.ShowDialog().ToString().Equals("OK"))
            stringFromFile = System.IO.File.ReadAllText(ofd.FileName);
        return stringFromFile;
    }

在 WPF 中 OpenFileDialog.ShowDialog()return a Nullable<bool> 所以你应该改变代码如下

public string OpenTextFile()
        {
            OpenFileDialog ofd = new OpenFileDialog();
            Nullable<bool> res = ofd.ShowDialog();
            if(res == true)
            {
                using(StreamReader sr = new StreamReader(ofd.FileName))
                {
                  return sr.ReadToEnd();
                }
            }
            //Here message error
            throw new Exception("Something");
        }

不需要调用 ToString(),更糟糕的是,如果 ShowDialog() 的 return 值为空,它会抛出 NullReferenceException,因为 ShowDialog() returns bool? (Nullable<bool>) 如另一个答案所指出的。

这是一个两行解决方案...

string OpenTextFile()
{
    var ofd = new OpenFileDialog();
    return ofd.ShowDialog() == true ?
            System.IO.File.ReadAllText(ofd.FileName) :
            String.Empty;
}