Un collega mi ha fatto una domanda interessante oggi - la parola chiave/operatore C# "è" considerata come riflessione?C# "è" operatore - è quella riflessione?
object tmp = "a string";
if(tmp is String)
{
}
Come viene implementato questo operatore dietro le quinte? Richiede riflessione o introspezione? Oppure a causa della natura fortemente tipizzata del linguaggio, il tipo dell'oggetto è immediatamente accessibile come attributo di primo livello dell'oggetto in memoria?
MSDN precisa che:
noti che l'operatore is considera solo le conversioni di riferimento, conversioni boxe e conversioni unboxing. Altre conversioni, come le conversioni definite dall'utente, non sono considerate dall'operatore is.
La possibilità di considerare conversioni in scatola e non in scatola sembra implicarmi una sorta di introspezione.
correlato http://stackoverflow.com/questions/57701/che cosa-are-il-performance-caratteristiche-di-is-reflection-in-c?lq=1 – nawfal