J'ai vu les deux dans un code que je maintiens, mais je ne connais pas la différence. Y en a-t-il une ?
J'ajoute que myCustomer est une instance de Customer.
J'ai vu les deux dans un code que je maintiens, mais je ne connais pas la différence. Y en a-t-il une ?
J'ajoute que myCustomer est une instance de Customer.
Le résultat des deux est exactement le même dans votre cas. Ce sera votre type personnalisé qui dérive de System.Type
. La seule vraie différence ici est que lorsque vous voulez obtenir le type d'une instance de votre classe, vous utilisez GetType
. Si vous n'avez pas d'instance, mais que vous connaissez le nom du type (et que vous avez juste besoin de l'adresse réelle de l'instance), vous pouvez utiliser la fonction System.Type
pour inspecter ou comparer à), vous utiliseriez typeof
.
EDIT : Je voudrais ajouter que l'appel à GetType
est résolu au moment de l'exécution, tandis que typeof
est résolu au moment de la compilation.
Pas nécessairement exactement les mêmes. Supposons que VipCustomer hérite de Customer, si à un moment donné myCustomer = new VipCustomer() ; alors son GetType() sera différent du type Customer. Comme vous l'avez dit, le temps d'exécution et le temps de compilation sont deux choses très différentes.
GetType() est utilisé pour trouver le nom de l'utilisateur. réel le type d'une référence d'objet au moment de l'exécution. Il peut être différent du type de la variable qui fait référence à l'objet, en raison de l'héritage. typeof() crée un littéral de type qui est du type exact spécifié et qui est déterminé au moment de la compilation.
Typeof(foo) est converti en une constante pendant le temps de compilation. foo.GetType() se produit au moment de l'exécution.
typeof(foo) se convertit aussi directement en une constante de son type (c'est-à-dire foo), donc cette opération échouerait :
public class foo
{
}
public class bar : foo
{
}
bar myBar = new bar();
// Would fail, even though bar is a child of foo.
if (myBar.getType == typeof(foo))
// However this Would work
if (myBar is foo)
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.