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.
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)