Je pensais J'ai eu une assez bonne compréhension de the difference entre le mot-clé is
et la méthode IsAssignableFrom
, mais la recherche SubControllers in MVC J'ai croisé du code qui m'a fait penser qu'il y avait peut-être quelque chose qui me manquait. Ici, il est:« typeof (ISubController) .IsAssignableFrom (value.GetType()) » au lieu de « valeur est ISubController »
object value = pair.Value;
if(value == null)
{
continue;
}
if (typeof(ISubController).IsAssignableFrom(value.GetType()))
{
var controller = (ISubController) value;
filterContext.Controller.ViewData.Add(pair.Key, controller.GetResult(filterContext.Controller));
}
Cette deuxième déclaration if
me semble comme une version alambiquée de:
if (value is ISubController)
Aussi, j'avais previously learned que typeof(T).IsValueType
prend environ trois fois plus longtemps que x is ValueType
, donc je don Je ne pense pas qu'ils obtiennent un avantage de performance de cette complication supplémentaire.
Y at-il une nuance qui me manque ici? J'aimerais penser que les gars d'ASP.NET MVC savent ce qu'ils font.