Ree*_*sey 24

没有.

File.Open在内部只​​不过是:

public static FileStream Open(string path, FileMode mode, FileAccess access, FileShare share)
{
    return new FileStream(path, mode, access, share);
}
Run Code Online (Sandbox Code Playgroud)

如果您不使用指定FileAccess和FileShare的重载,它会为您指定(使用FileShare.None,附加FileAccess.Write或否则为ReadWrite).

话虽这么说,这是一个实现细节,而不是文档的一部分.从技术上讲,未来的.NET Framework版本可能会使用不同的实现,但我发现这不太可能.


Han*_*ant 23

这种重复在.NET框架中非常罕见.但Krzysztof Cwalina在本次讲座中讲述了这个故事.他们对该框架的早期版本进行了可用性研究,要求一群经验丰富的(但与.NET无关的)程序员使用FileStream和StreadReader/Writer类编写一些代码.

它进展不顺利,他们获得了100%的失败率.他们通过向System.IO.File类添加方法来回应,使用"最有可能陷入成功的陷阱"的方法.

很酷的视频顺便说一句,如果你完全了解框架看起来像它的样子的原因.

更好地发布一个真正的答案:File.Open()方法调用FileStream构造函数,传递最有可能做正确事情的FileAccess和FileShare(如果你没有指定它们)的值.这是FileAccess.ReadWrite和FileShare.None.

  • 链接再次被打破 (3认同)
  • 再次更新,现已在 YouTube 上发布。嗯,对于一个甚至没有被选为答案并且无法获得足够票数的答案来说,这是一个很大的麻烦。当心未来的 SO 贡献者,这就像青少年的性行为。五分钟的乐趣,但你会在余生中支持它。 (2认同)
  • 而且,FWIW,有问题的解释似乎从视频的 44:00 左右开始。 (2认同)

Axe*_*ger 5

File.Open()是一种方便的方法.在内部,它实现为:

public static FileStream Open(string path, FileMode mode, FileAccess access, FileShare share)
{
    return new FileStream(path, mode, access, share);
}
Run Code Online (Sandbox Code Playgroud)