C# 用C语言将信息保存到文本文件#

C# 用C语言将信息保存到文本文件#,c#,streamwriter,C#,Streamwriter,我在学习C#的过程中撞到了一堵墙,这表明我显然错过了一些重要的东西。该行: var objWriter = new System.IO.StreamWriter(fileName, False); 在下面的代码中,会导致错误-字符串变量fileName无法转换为System.IO.Stream,并且False在当前上下文中不存在。为什么? string message = "Hi There!"; string myDocs = Environment.GetFolderPath(Enviro

我在学习C#的过程中撞到了一堵墙,这表明我显然错过了一些重要的东西。该行:

var objWriter = new System.IO.StreamWriter(fileName, False);
在下面的代码中,会导致错误-字符串变量fileName无法转换为System.IO.Stream,并且False在当前上下文中不存在。为什么?

string message = "Hi There!";
string myDocs = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string fileName = myDocs + "'\'Test.txt";

if (!System.IO.File.Exists(fileName))
{
    System.IO.File.Create(fileName).Dispose();
}
var objWriter = new System.IO.StreamWriter(fileName, False);
objWriter.Write(message);
Console.WriteLine("Message Saved");
objWriter.Close();
修正: 将
False
替换为
False

说明: 是StreamWriter拥有的构造函数列表。请注意,它要么采用
编码
,要么采用
字符串
布尔值


由于C#是区分大小写的,因此它试图在代码中的某个地方查找名为False的对象,这解释了第一个问题(False在当前上下文中不存在)。但是False是一个对象,而不是布尔值,因此编译器假定文件名是Stream类型(与签名匹配),但遗憾的是,它不知道如何将字符串转换为流,因此出现了第二个错误。

Youre\n没有在给定代码中工作,并将False替换为False

替换这个

    string fileName = myDocs + "'\'Test.txt";
用这个

    string fileName = myDocs + @"\Test.txt";

我建议的代码

var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Test.txt");

using (var fs = new StreamWriter(path))
{
    fs.Write("Hi there!");
}

Console.WriteLine("Message Saved");
首先,请使用
路径。结合
静态方法创建完整路径。处理
\
\\
也可以,但使用已经创建的方法要漂亮得多

第二件事是使用块在
中创建
IDisposable
对象总是好的。在您的情况下,
使用
将在使用块作用域结束时关闭流


另一个注意事项是,最好在希望使用变量的地方声明变量。在这种情况下,
“您好!”
字符串直接在使用位置创建。这是我们应该遵守的良好做法之一。请查看链接。

c#区分大小写,因此它是
false
,而不是
false
arghhhh。我建议使用
using
模式,这样你就不会忘记
.Close()
你的
StreamWriter
@Kolichikov哦,这是一个痛苦而耗时的教训。非常感谢我浪费了几个宝贵的问题中的一个,有人能提出一种使代码更简洁的方法吗。也许是一篇非常有用的博客或文章??我想你应该解释一下为什么你建议使用代码片段来提高投票率。@martijnn2008对不起,我不知道你的意思。我投了Floarian3007的票,因为他明智地发现我把连接搞得一团糟。我也非常喜欢rraszewski的建议,因为它为我打开了一些有趣的研究,我想你需要使用.System.IO;为了解决这个问题work@Rich首先,这不是写给你的。第二,我在他的回答中遗漏了“为什么”。当然,现在你可以用谷歌搜索“为什么”。我也不喜欢冗长的代码,尤其是当问题使用这些漂亮的中间变量时。此外,追加模式的
true
参数丢失。发现得很好!我想这将是我的下一个问题。所以,我投了赞成票。万分感激