Я думаю, что причина предпочтения use
в том, что синтаксис проще. Многие другие языковые конструкции могут быть выражены как функции (например, try .. with
, for
, while
, ...). Если разработчики языка добавили более простой синтаксис, почему бы не использовать его ...
Как я уже писал в более раннем ответе, на который вы ссылались , вы можете точно контролировать область действия даже при использовании use
. (И таким образом, вы можете использовать его даже в конструкторах выражений объектов объявлений классов.) Но в большинстве случаев автоматическое поведение просто отлично (что делает конструкцию проще, чем using
в C #) .
Вне зависимости от того, будете ли вы использовать use
или using
в ситуациях, когда вам необходимо явно контролировать область действия, это вопрос личного вкуса. Если вам не нравится явная область видимости use
(которая выглядит немного странно, я признаю, но у меня хорошо работает), вы можете использовать using
.
РЕДАКТИРОВАТЬ: В объявлении класса, например, вы не можете написать:
type Foo() =
use a = new Whatever()
// ...
потому что область действия a
будет (возможно) всем временем жизни экземпляра. (Хотя я думаю, что это может быть полезно, и это может добавить автоматическую реализацию IDisposable
для вашего типа). Если вы используете using
, у вас не будет таких проблем.