Сегодня коллега задал мне интересный вопрос - является ли ключевое слово/оператор C# «считаться отражением?C# «есть» оператор - это отражение?
object tmp = "a string";
if(tmp is String)
{
}
Как этот оператор реализован за кулисами? Требует ли это рефлексии или самоанализа? Или из-за строго типизированного характера языка, является ли Тип объекта немедленно доступным как атрибут верхнего уровня для объекта в памяти?
MSDN утверждает, что:
Обратите внимание, что это оператор учитывает только ссылочные преобразования, преобразование бокса и распаковку преобразование. Другие преобразования, такие как пользовательские преобразования, не рассматриваются оператором is.
Возможность рассматривать конвертированные в коробку и распакованные конверсии, по-видимому, подразумевает для меня какую-то интроспекцию.
http://stackoverflow.com/questions/57701/what-are-the-performance-characteristics-of-is-reflection-in-c?lq=1 – nawfal