Maison > développement back-end > C++ > En quoi les types d'héritage et de valeur diffèrent-ils dans .NET ?

En quoi les types d'héritage et de valeur diffèrent-ils dans .NET ?

Susan Sarandon
Libérer: 2024-12-30 03:12:08
original
132 Les gens l'ont consulté

How Do Inheritance and Value Types Differ in .NET?

Héritage et types de valeur dans .NET

La question de savoir si tout dans .NET est un objet a suscité une controverse. S'il est vrai que la plupart des types héritent du type de base System.Object, il existe des exceptions.

Héritage

Toutes les classes, tableaux, et les types de délégués héritent de System.Object. Cependant, les interfaces, les types de pointeurs et les paramètres de type ouvert ne le font pas. Les types d'interface sont convertibles en System.Object, mais ils héritent uniquement d'autres types d'interface. Les types de paramètres de pointeur et de type ouvert n'ont pas de relations d'héritage.

Types de valeur

Les types de valeur, tels que les entiers, les doubles et les booléens, héritent également du Système .Objet. Cependant, ils sont traités différemment des types référence (objets) dans la mémoire et dans le passage des méthodes. Les types valeur ne sont pas des références à des objets ; ce sont les objets eux-mêmes. Les types valeur sont stockés sur la pile, tandis que les types référence sont stockés sur le tas. Lorsqu'un type valeur est transmis à une méthode, la méthode obtient une copie de la valeur, et non une référence à la valeur d'origine. Cela signifie que les modifications apportées au type de valeur dans la méthode n'affecteront pas la valeur d'origine.

Boxing

Pour traiter un type de valeur comme un objet, il doit être en boîte. Boxing crée un nouvel objet sur le tas qui contient la valeur du type valeur. Le nouvel objet est un type de référence et il est traité comme un objet par le Common Language Runtime (CLR).

Conclusion

Alors que la plupart des types dans .NET héritent à partir de System.Object, les types valeur sont une exception. Les types valeur sont traités différemment dans la mémoire et le passage de méthodes que les types référence. Cependant, les types valeur peuvent être encadrés pour les traiter comme des objets si nécessaire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal