После рефакторинга некоторого кода в последнее время, в котором участвовали некоторые переименования классов, некоторые из моих кодов неожиданно разразились. Причиной был неудачный оператор "есть", что я был очень удивлен, не был ошибкой или предупреждением компилятора.
Эта полная программа показывает ситуацию:
static class ExtensionMethods {}
class Program {
static void Main() {
Test("Test");
}
public static bool Test(object obj)
{
return obj is ExtensionMethods;
}
}
Я бы предположил, что "obj is ExtensionMethods" вызывает какое-то предупреждение, учитывая, что ExtensionMethods является статическим классом.
Компилятор выдаст предупреждение для оператора "is", если объект, находящийся в процессе тестирования, никогда не может быть предоставленного типа, например ((string)obj) is System.Uri
.
Я забыл сценарий, в котором это будет действительно значимым тестом?