В чем разница между этими двумя методами C # - PullRequest
4 голосов
/ 20 мая 2010

В чем разница между этими двумя случаями. Во-первых, если я открою соединение и передам его в метод в качестве параметра по сравнению с открытием соединения непосредственно в методе?

cnn.open()
func(cnn,param1,param2);

против

func(cnn, param1,param2)
{
  cnn.open();
  //open connection here
}

Ответы [ 5 ]

2 голосов
/ 20 мая 2010

Нет отличия от кода, который вы разместили, за исключением того, что в одном случае ваша вызывающая функция должна позаботиться об открытии / закрытии соединения, в другом вы ожидаете, что функция сделает это.

0 голосов
/ 20 мая 2010

Что ж, я думаю, вам не следует спрашивать о другом, вам следует объяснить ситуацию, в которой вы находитесь, и попросить рекомендации относительно того, какой случай следует использовать.

В любом случае, как все говорили вам, в случае 2 объект соединения и его жизненный цикл инкапсулированы в функцию вызываемого абонента. Это рекомендуется, если работа с базой данных вне этой функции нежелательна.

В противном случае, если у вас есть какие-либо другие действия с базой данных, которые должны выполняться вне этой области действия, например, в функции вызывающей стороны или в любой другой функции (кроме func), вызываемой из функции вызывающей стороны, вам следует использовать вариант 1.

0 голосов
/ 20 мая 2010

Разница в том, как вы хотите использовать соединение и производительность. Если функция является однократным вызовом, и вы не вызываете другие функции или не делаете ничего с этим соединением, то вторая версия функции может быть даже уменьшена до:

func(param1, param2) {
    Connection c = ....
    c.Open(...);
    ...
    c.Close();
}

Однако, если вы вызываете много функций в соединении, даже вызываете функцию много раз в соединении или если создание и настройка соединения находятся на более высоком уровне в вашем коде, то вам следует использовать первую версию функция, с добавлением исключения, если соединение не открыто.

0 голосов
/ 20 мая 2010

Нет функциональной разницы, но линии для открытия и закрытия соединения обычно должны быть как можно ближе друг к другу, следовательно, они должны быть в одном методе.

0 голосов
/ 20 мая 2010

Разница в том, что во втором методе вы открываете соединение.

В первом методе вы ожидаете, что метод будет использовать только соединение, не заботясь об очистке ресурсов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...