Kolega zadał mi dziś interesujące pytanie - czy słowo kluczowe C#/operator "jest" uważane za odbicie?C# "jest" operator - czy to odbicie?
object tmp = "a string";
if(tmp is String)
{
}
W jaki sposób operator jest realizowany za kulisami? Czy wymaga refleksji lub introspekcji? Czy z powodu silnie typowanej natury języka, typ obiektu jest natychmiast dostępny jako atrybut najwyższego poziomu obiektu w pamięci?
MSDN stwierdza:
Zauważ, że jest operator uzna tylko konwersje referencyjnych, konwersje bokserskie i Unboxing konwersji. Inne konwersje, takie jak konwersje zdefiniowane przez użytkownika, nie są uwzględniane przez operatora is.
Możliwość rozważenia konwersji pudełkowych i bezokiennych wydaje się sugerować mi jakąś introspekcję.
powiązane http://stackoverflow.com/questions/57701/what-are-to-performance-characteristics-of-is-reflection-in-c?lq=1 – nawfal