C# 为什么File.Open要比File.Create好得多,以便覆盖现有文件?

C# 为什么File.Open要比File.Create好得多,以便覆盖现有文件?,c#,file,C#,File,这与询问如何覆盖现有文件的另一个SO有关 最重要的答案是: FileStream file = File.Open("text.txt", FileMode.Create); 我的回答是: FileStream fs = System.IO.File.Create(fileName); 在我写这个问题的时候,统计结果是14比0支持Open 如果投票表明解决方案是好是坏,这让我有点怀疑: 有什么东西是我遗漏的吗 这些方法将使 显然,这是更好的选择 打开覆盖创建 嗯,我也用Create来回答,但

这与询问如何覆盖现有文件的另一个SO有关

最重要的答案是:

FileStream file = File.Open("text.txt", FileMode.Create);
我的回答是:

FileStream fs = System.IO.File.Create(fileName);
在我写这个问题的时候,统计结果是14比0支持
Open

如果投票表明解决方案是好是坏,这让我有点怀疑:

有什么东西是我遗漏的吗 这些方法将使 显然,这是更好的选择
打开
覆盖
创建


嗯,我也用
Create
来回答,但是
Open
确实是更好的解决方案,因为您表示希望打开一个文件,并使用
FileMode。Create
表示如果文件不存在,您希望创建该文件。我想这很清楚。

首先,我想你可能读得太多了。一、 例如,我倾向于投第一个正确答案的赞成票,而忽略了任何进一步的答案。。。所以先到那里有点帮助

其次,
File.Open
System.IO.File.Open
读起来更好,即使它们是相同的


第三,从可读性的角度来看,Create在语义上没有Open那么重要。如果你想创建和打开一个文件,第一个更明确。

对我来说,我确切地知道
file.open(“…”,FileMode.create)
的作用,因为我可以将鼠标悬停在
FileMode.create上,它告诉我每次都会创建一个新文件<代码>文件。创建(“…”)
没有这样的工具提示,表明它可以完成此操作。

我知道只有一个地方可以找到此问题的答案:


结果是,这两个函数都调用了
新的文件流(…
,并带有一整套参数!

我猜。但是Create不是更简洁吗?另外,Open有FileMode.Create标志,我认为这让它有点混乱:“我想打开,但要创建它。”而不是“我想创建,我不在乎以前有什么。”有没有任何情况下,Open(除了这些语义)实际上会更好?也就是说,会产生Open没有的其他副作用?也许我对它读得太多了。我知道,当我完成键入答案时,可能有人会“击败”我的第一个响应。让我感到奇怪的是,另一个问题“更难”或“有趣”的问题可能不会像那个问题那样在投票中获得更多的支持。这是一个简单的问题,所以我通常不会看到在谷歌或msdn上花2秒钟回答的问题会得到那么高的支持。我猜“开放”的明确措辞比“创建”给出了更好的语义。“@Brian:仅仅因为第一个答案而投票赞成第一个答案完全是胡说八道。好的答案应该投票赞成,而不是第一个答案。@divo:我完全同意。这叫做懒惰。只是说实话。我认为这种情况经常发生:)@divo:我投票赞成你的评论。。。我应该改过自新,少偷懒。@divo:我只是想澄清一下:我对第一个正确答案投了赞成票,而不仅仅是第一个答案。不为自己的行为辩护。。。只是澄清一下。嗯,这正是我要说的。它们最终都调用相同的代码。我想这是一个人们喜欢“打开”而不是“创建”的问题,因为它使你得到一个打开并准备就绪的文件变得更加明显。这实际上让我笑了一下。通过工具提示进行编码决策。有趣的是,我想这是一个很好的歧视者,因为它确实提供了更多的信息,这对发展至关重要。看起来是随机的,但实际上是有道理的。谢谢:)