В приведенном ниже коде исключение выдается при сравнении динамического типа.Примечание. У меня есть возможность прерывания для всех исключений в VS2010 (в разделе «Отладка -> Исключения»).Исключением является «System.NotSupportedException» в «Общих исключениях времени выполнения».Если я продолжаю работу после этого исключения или выключаю его, код работает правильно.
1) Разве все исключения не являются плохими и должны быть устранены (не проигнорированы)?
2) Все остальные включаютсявсе исключения исключений в Visual Studio?
3) В «MyMethod (0)» значение «case» преобразуется в int во время выполнения.Я считаю, что это хорошо, чтобы сравнить «значение» с нулевым, хотя int не является ссылочным типом.Это потому, что значение все еще действительно динамического типа внизу (очень похоже на объект), который является типом ref.Следовательно, в динамике будут все возможности своего оцениваемого типа во время выполнения (т. Е. Значение ++) в дополнение к функциям динамического типа (т. Е. Нулевое сравнение).
MyMethod(0); // Causes problems (value runtime type is int)
MyMethod(null); // Causes problems (value runtime type is ref?)
public dynamic MyMethod(dynamic value)
{
if (value != null) {...}// Throws NotSupportedExpception
if (value != 0) {...} // Throws NotSupportedExpception
}