Возвращение значения методы из внутри с помощью заявления , которое получает DataContext , кажется, всегда работает штраф , как это:
public static Transaction GetMostRecentTransaction(int singleId)
{
using (var db = new DataClasses1DataContext())
{
var transaction = (from t in db.Transactions
orderby t.WhenCreated descending
where t.Id == singleId
select t).SingleOrDefault();
return transaction;
}
}
Но я всегда чувствую , что я должен закрывать что - то прежде , чем я вырваться из использования скобок, например , путь определения сделки , прежде чем с помощью заявления, получить его значение в скобках, а затем возвращаюсь после скобок.
Было бы лучше определить и вернуть переменную вне скобок или каким-либо образом сэкономить ресурсы?
Ответы:
Нет, я думаю, так понятнее. Не волнуйтесь,
Dispose
будет по-прежнему вызываться «на выходе» - и только после того, как возвращаемое значение будет полностью вычислено. Если в какой-то момент возникает исключение (включая оценку возвращаемого значения), оноDispose
все равно будет вызываться.Хотя вы, безусловно, можете выбрать более длинный путь, это две дополнительные строки, которые просто добавляют беспорядка и дополнительный контекст, который нужно отслеживать (мысленно). Фактически, вам действительно не нужна дополнительная локальная переменная, хотя это может быть удобно с точки зрения отладки. Вы могли просто иметь:
В самом деле, у меня даже может возникнуть соблазн использовать точечную нотацию и поместить
Where
условие вSingleOrDefault
:источник
Посмотри на это
Понимание оператора using в C #
источник
Там нет ни одного побочных эффектов возвращения из внутри
using()
заявления.Другой вопрос, делает ли он наиболее читаемый код.
источник
Думаю, все равно. В коде нет ничего плохого. Платформе .NET безразлично, где создается объект. Важно то, есть ли на него ссылка или нет.
источник
Да, может быть побочный эффект. Например, если вы используете тот же метод в методе действия ASP.NET MVC, вы получите следующую ошибку: «Экземпляр ObjectContext удален и больше не может использоваться для операций, требующих подключения»
источник