Нет.
File.Open внутренне не более чем:
public static FileStream Open(string path, FileMode mode, FileAccess access, FileShare share)
{
return new FileStream(path, mode, access, share);
}
Если вы не используете перегрузку, которая указывает FileAccess и FileShare, она указывает это для вас (используя FileShare.None и FileAccess.Write при добавлении или Прочтите, напишите иначе).
При этом это деталь реализации, а не часть документации . Технически будущий выпуск .NET Framework может использовать другую реализацию, хотя я считаю это маловероятным.
Подобное дублирование очень редко встречается в .NET framework. Но есть одна история, рассказанная Кшиштофом Цвалиной в этой лекции. Они провели исследование удобства использования ранней версии фреймворка, попросив группу опытных (но в остальном не разбирающихся в .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);
}