1. Les objets de type valeur ont deux représentations : unboxed et boxed. Au contraire, les types de référence sont toujours sous forme encadrée
2. . Ce type fournit les mêmes méthodes que System.Object. Cependant, System.ValueType remplace la méthode Equals et peut renvoyer true si les valeurs de champ des deux objets correspondent complètement. De plus, System.ValueType remplace la méthode GetHashCode. L'algorithme utilisé par cette méthode remplacée prend en compte les valeurs des champs d'instance de l'objet lors de la génération du code de hachage. Étant donné que cette implémentation par défaut présente des problèmes de performances, vous devez remplacer les méthodes Equals et GetHashCode lors de la définition de votre propre type de valeur et fournir leur implémentation explicite
3, car le type de valeur ne peut pas être utilisé comme un type de base pour définir un nouveau type valeur ou un nouveau type référence, donc aucune nouvelle méthode virtuelle ne doit être introduite dans les types valeur, toutes les méthodes ne peuvent pas être abstraites et toutes les méthodes sont implicitement scellées (ne peuvent pas être remplacées)
4. Les variables de type référence contiennent l'adresse de l'objet dans le tas. Les variables de type référence sont initialisées à null lors de leur création et le nom de la table ne pointe actuellement pas vers un objet valide. Les vues qui utilisent des variables de type référence nulle lèveront NUllReferenceException. Au contraire, une variable d'un type valeur contient toujours une valeur du type sous-jacent et tous les membres du type valeur sont initialisés à 0. Les variables de type valeur ne sont pas des pointeurs et l'accès à un type valeur ne peut pas lever une exception NullReferenceExcption
5, l'attribution d'une variable de type valeur à une autre variable de type valeur effectuera une affectation champ par champ. L'attribution d'une variable de type référence à une autre variable de type référence copie uniquement l'adresse mémoire
6. Deux références ou plus peuvent faire référence au même objet dans le tas, donc pour une variable L'opération effectuée. peut affecter un autre objet référencé. En revanche, les variables de type valeur sont autonomes et les opérations effectuées sur une variable de type valeur ne peuvent pas affecter une autre variable de type valeur
7 Puisque les types de valeur non boxés ne sont pas alloués sur le tas, une fois. les méthodes qui définissent une instance de ce type ne sont plus actives, le stockage qui leur est alloué est libéré au lieu d'attendre le garbage collection
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!