использование и вызов веб-службы - PullRequest
1 голос
/ 11 февраля 2010

Что делает оператор using? Это действительно нужно?

    using (MyWebservice x = new MyWebservice())
    {
    //random code
    }

Ответы [ 4 ]

3 голосов
/ 11 февраля 2010

http://msdn.microsoft.com/en-us/library/yh598w02.aspx

Оператор using гарантирует, что Dispose вызывается, даже если возникает исключение при вызове методов объекта.Вы можете достичь того же результата, поместив объект в блок try, а затем вызвав Dispose в блоке finally;на самом деле, именно так оператор using переводится компилятором.

1 голос
/ 11 февраля 2010

Это синтаксический сахар для одноразового рисунка . После компиляции он расширяется до полной структуры в сгенерированном коде IL.

Объект, который вы инициализируете внутри (), получит его Dispose, вызываемый при выходе из области видимости. Вот почему только классы, которые реализуют IDisposable, могут использовать его.

См. Статью MSDN об этом.

1 голос
/ 11 февраля 2010

Нет, это не нужно. Мы, специалисты по веб-сервисам, используем его, чтобы убедиться, что вы обращаете внимание.

0 голосов
/ 11 февраля 2010

Чтобы ответить на ваш вопрос «Что делает оператор using?», Вот несколько примеров, иллюстрирующих более распространенное использование оператора using для обеспечения удаления, на которое ссылаются другие ответы:

Убедиться, что StringWriter и XmlTextWriter удалены (закрыты), когда мы закончим их использование:

using (StringWriter sw = new StringWriter(sb))
        using (XmlTextWriter xw = new XmlTextWriter(sw))
        {
            WebPartManager1.ExportWebPart(partToExport, xw);  
        }

Убедиться, что и соединение с базой данных, и объект команды расположены:

DataTable dt = new DataTable();

using (SqlConnection connection = new SqlConnection("ConnectionString"))
using (SqlCommand command = new SqlCommand())
{
    command.Connection = connection;
    command.CommandText = "SELECT * FROM Customers";

connection.Open();
using (SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection))
{
    dt.Load(reader);
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...