При оценке вашего утверждения время выполнения должно сначала следовать ссылке, на которую ссылается переменная. Только тогда он может оценить объект, на который ссылается, чтобы определить, действительно ли это строка.
Поскольку ссылка null
ссылается на отсутствие объекта, это не строка. На самом деле, это ничто.
Вы можете использовать оператор typeof
, чтобы получить объект Type
, соответствующий строке, вместо сравнения объекта, на который ссылается, если это ваша конечная цель.
Это на самом деле конкретный пример, приведенный Эрик Липперт в своем блоге на эту же тему:
Я заметил, что это оператор непоследовательны в C#. Проверьте это:
string s = null; // Clearly null is a legal value of type string
bool b = s is string; // But b is false!
Что случилось с этим?
- http://ericlippert.com/2013/05/30/what-the-meaning-of-is-is/
's' не является строкой, это пустая ссылка. Если бы он ссылался на что-то, что-то было бы строкой. –
однако 'bool b = typeof (s) - строка;' даст ожидаемый результат – Robert
no i dont get null refrence –