Есть ли какая-либо разница для создания нового экземпляра объекта MySqlConnection, переданного в экземпляре объекта MySqlConnection VS, в оператор using в C #? - PullRequest
0 голосов
/ 14 октября 2019

Мне интересно, есть ли какие-либо различия в создании экземпляра нового объекта MySqlConnection VS, передаваемого в экземпляре объекта MySqlConnection в оператор using в C #?

Если да, какой способ предпочтительнее? почему он предпочтительнее другого?

Ниже приведен пример кода для имитации двух случаев: -

public class QueryService() {
    private IDbConnection con;

    public QueryService() {
        con = new MySqlConnection(connectionString));
    }

    public List<ExampleDto> QueryList() {
        using (con)
        {
            con.Open();
            // Do work here; connection closed on following line.
        }
    }
}

public class QueryService() {
    public QueryService() {}

    public List<ExampleDto> QueryList() {
        using (var con = new MySqlConnection(connectionString)))
        {
            con.Open();
            // Do work here; connection closed on following line.
        }
    }
}

1 Ответ

1 голос
/ 14 октября 2019

"using" делает "Dispose" в конце области применения. Таким образом, в обоих случаях вы получаете удаленное соединение.

Но в первом случае у вас все еще есть доступ к уже удаленной переменной. Это не рекомендуемый способ, но он разрешен.

Единственное, что вам разрешено делать с этой расположенной переменной, - это присвоение нового значения. Все остальное потерпит неудачу. Содержимое переменной не установлено равным нулю.

...