C#, эквивалентный Выгоде VB.NET …, Когда

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

14
задан stakx supports GoFundMonica 16 August 2012 в 11:07
поделиться

2 ответа

Нет никакого эквивалента Catch…When в C#. Необходимо будет действительно обратиться к if оператор в Вашем catch, затем повторно бросить, если условие не выполняется:

try
{
    …
}
catch (ArgumentNullException e)
{
    if ("SAMPLES" == e.ParamName.ToUpper())
    {
        … // handle exception
    }
    else
    {
        throw;  // condition not fulfilled, let someone else handle the exception
    } 
}
15
ответ дан 1 December 2019 в 06:59
поделиться

Это не воссоздаст ту же семантику как Выгода VB Когда выражение. Существует одно основное отличие. VB, Когда выражение выполняется перед стеком, раскручиваются, происходит. Если бы необходимо было исследовать стек при, когда Фильтр, Вы на самом деле видели бы кадр, где исключение было выдано.

Наличие, если в блоке выгоды отличается, потому что блок выгоды выполняется после того, как стек раскручен. Это особенно важно когда дело доходит до сообщения об ошибке. В сценарии VB у Вас есть возможность катастрофического отказа с отслеживанием стека включая отказ. Не возможно получить то поведение в C#.

РЕДАКТИРОВАНИЕ:

Записал подробное сообщение в блоге на предмете.

12
ответ дан 1 December 2019 в 06:59
поделиться
Другие вопросы по тегам:

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