Любопытное расширение оператора использования C#

Я бы предложил использовать 127.0.0.1 вместо localhost

adb -s 127.0.0.1:4444 uninstall example.com.yourappname

26
задан C. Ross 3 June 2009 в 20:28
поделиться

4 ответа

Нет, блок finally будет выполняться ВСЕГДА. Вы можете получить объект не из нового, а из какой-то другой функции, которая возвращает ваш объект, и она может вернуть NULL. using () - ваш друг!

dss539 любезно предложил мне включить его примечание:

using(Simple simp = null) 

- еще одна причина, по которой расширение должно сначала проверять наличие null.

22
ответ дан 28 November 2019 в 07:31
поделиться

использование (Simple simp = null) - это еще еще одна причина, по которой раскрытие сначала должно проверять наличие null.

11
ответ дан 28 November 2019 в 07:31
поделиться

MSDN для оператора using.

Что мне кажется странным, так это то, что он не расширяется до:

Simple simp = new Simple();
Simple __compilergeneratedtmpname = simp;
try
{
    Console.WriteLine("here");
}
finally
{
    if(__compilergeneratedtmpname != null)
    {
        __compilergeneratedtmpname.Dispose();
    }
}
4
ответ дан 28 November 2019 в 07:31
поделиться

Похоже, ваш комментарий:

"Если есть опасения, что между Простым конструктором и началом блока try могут возникнуть какие-то промежуточные шаги , тогда это действительно будет проблемой, потому что тогда может быть сгенерировано исключение, которое вообще предотвратит выполнение блока finally ».

, возможно, мертв. См .:

Атомарность и ошибки асинхронных исключений

Я также хочу отметить проблему (и) с WCF и использованием:

Как избежать проблем с оператором Using и прокси-серверами WCF , который ссылается на:

Как избежать проблем с оператором using

1
ответ дан 28 November 2019 в 07:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: