Просто из любопытства.
Если у меня есть следующий код
public static string Format(dynamic exception)
{
switch (exception.GetType().ToString())
{
case "test":
return "Test2";
}
return null;
}
я получаю сообщение об ошибке "Выражение переключения или метка case должны быть типа bool, char, string, integer, enum или соответствующего типа, допускающего значение NULL"
но если у меня есть следующий код
public static string Format(dynamic exception)
{
string test = exception.GetType().ToString();
switch (test)
{
case "test":
return "Test2";
}
return null;
}
все нормально компилируется. Какая разница, если переключатель проверяет переменную типа string и ToString()? Или это из-за шанса вызвать исключение до вызова ToString()?