Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte.
Traduction
Source
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

ValueType, classe

Fournit la classe de base pour les types valeur.

System.Object
  System.ValueType
    System.Enum

Espace de noms :  System
Assembly :  mscorlib (dans mscorlib.dll)
[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class ValueType

Le type ValueType expose les membres suivants.

  Nom Description
Méthode protégée Pris en charge par XNA Framework aey3s293.PortableClassLibrary(fr-fr,VS.100).gif ValueType Initialise une nouvelle instance de la classe ValueType.
Début
  Nom Description
Méthode publique Pris en charge par XNA Framework aey3s293.PortableClassLibrary(fr-fr,VS.100).gif Equals Indique si cette instance et un objet spécifié sont égaux. (Substitue Object.Equals(Object).)
Méthode protégée Pris en charge par XNA Framework aey3s293.PortableClassLibrary(fr-fr,VS.100).gif Finalize Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de netto***ge avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.)
Méthode publique Pris en charge par XNA Framework aey3s293.PortableClassLibrary(fr-fr,VS.100).gif GetHashCode Retourne le code de hachage pour cette instance. (Substitue Object.GetHashCode().)
Méthode publique Pris en charge par XNA Framework aey3s293.PortableClassLibrary(fr-fr,VS.100).gif GetType Obtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode protégée Pris en charge par XNA Framework aey3s293.PortableClassLibrary(fr-fr,VS.100).gif MemberwiseClone Crée une copie superficielle de l'objet Object actif. (Hérité de Object.)
Méthode publique Pris en charge par XNA Framework aey3s293.PortableClassLibrary(fr-fr,VS.100).gif ToString Retourne le nom de type qualifié complet de cette instance. (Substitue Object.ToString().)

Dans XNA Framework 3.0, ce membre est hérité de Object.ToString().


Dans  , ce membre est hérité de Object.ToString().
Début

ValueType substitue aux méthodes virtuelles provenant de Object des implémentations plus appropriées pour les types valeur. Voir aussi Enum qui hérite de ValueType.

Les types de données se divisent en types valeur et en types référence. Les types valeur sont soit alloués par des piles, soit alloués inline dans une structure. Les types référence sont alloués par des tas. Les types valeur et référence dérivent de la classe de base fondamentale Object. Au cas où un type valeur devrait se comporter comme un objet, un wrapper faisant ressembler un type valeur à un objet de référence est alloué sur le tas et la valeur du type valeur y est copiée. Ce wrapper est marqué pour que le système sache qu'il contient un type valeur. Ce processus porte le nom de boxing et le processus inverse, d'unboxing. Le boxing et l'unboxing permettent à n'importe quel type d'être traité comme un objet.

En plus de servir de classe de base pour les types valeur dans le .NET Framework, la structure ValueType n'est pas utilisée en général directement dans le code. Toutefois, elle peut être utilisée comme paramètre dans les appels de méthode pour restreindre les arguments éventuels aux types valeur au lieu de tous les objets, ou autoriser une méthode à gérer plusieurs types valeur différents. L'exemple suivant illustre comment ValueType empêche de passer des types référence aux méthodes. Il définit une classe nommée Utility qui contient quatre méthodes : IsNumeric qui indique si son argument est un nombre ; IsInteger qui indique si son argument est un entier ; IsFloat qui indique si son argument est un nombre à virgule flottante ; et Compare qui indique la relation entre deux valeurs numériques. Dans chaque cas, les paramètres de la méthode sont de type ValueType, et les types référence ne sont pas transmis aux méthodes.


using System;
using System.Numerics;


public class Utility
{
   public enum NumericRelationship {
      GreaterThan = 1, 
      EqualTo = 0,
      LessThan = -1
   };

   public static NumericRelationship Compare(ValueType value1, ValueType value2)
   {
      if (! IsNumeric(value1)) 
         throw new ArgumentException("value1 is not a number.");
      else if (! IsNumeric(value2))
         throw new ArgumentException("value1 is not a number.");

      // Use BigInteger as common integral type
      if (IsInteger(value1) && IsInteger(value2)) {
         BigInteger bigint1 = (BigInteger) value1;
         BigInteger bigint2 = (BigInteger) value2;
         return (NumericRelationship) BigInteger.Compare(bigint1, bigint2);
      }
      // At least one value is floating point; use Double.
      else {
         Double dbl1 = 0;
         Double dbl2 = 0;
         try {
            dbl1 = Convert.ToDouble(value1);
         }
         catch (OverflowException) {
            Console.WriteLine("value1 is outside the range of a Double.");
         }
         try {
            dbl2 = Convert.ToDouble(value2);
         }
         catch (OverflowException) {
            Console.WriteLine("value2 is outside the range of a Double.");
         }
         return (NumericRelationship) dbl1.CompareTo(dbl2);
      }
   }

   public static bool IsInteger(ValueType value)
   {         
      return (value is SByte || value is Int16 || value is Int32 
              || value is Int64 || value is Byte || value is UInt16  
              || value is UInt32 || value is UInt64 
              || value is BigInteger); 
   }

   public static bool IsFloat(ValueType value) 
   {         
      return (value is float | value is double | value is Decimal);
   }

   public static bool IsNumeric(ValueType value)
   {
      if ( ! (value is Byte ||
              value is Int16 ||
              value is Int32 ||
              value is Int64 ||
              value is SByte ||
              value is UInt16 ||
              value is UInt32 ||
              value is UInt64 ||
              value is BigInteger ||
              value is Decimal ||
              value is Double ||
              value is Single))
            return false;
      else
         return true;
   }
}


L'exemple de code suivant illustre les appels des méthodes de la classe Utility.


public class Example
{
   public static void Main()
   {
      Console.WriteLine(Utility.IsNumeric(12));
      Console.WriteLine(Utility.IsNumeric(true));
      Console.WriteLine(Utility.IsNumeric('c'));
      Console.WriteLine(Utility.IsNumeric(new DateTime(2012, 1, 1)));
      Console.WriteLine(Utility.IsInteger(12.2));
      Console.WriteLine(Utility.IsInteger(123456789));
      Console.WriteLine(Utility.IsFloat(true));
      Console.WriteLine(Utility.IsFloat(12.2));
      Console.WriteLine(Utility.IsFloat(12));
      Console.WriteLine("{0} {1} {2}", 12.1, Utility.Compare(12.1, 12), 12);
   }
}
// The example displays the following output:
//       True
//       False
//       False
//       False
//       False
//       True
//       False
//       True
//       False
//       12.1 GreaterThan 12


.NET Framework

Pris en charge dans : 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Pris en charge dans :

Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Date

Historique

Motif

Octobre 2010

Ajout d'un exemple.

Commentaires client.

Cela vous a-t-il été utile ?
(1500 caractères restants)
Contenu de la communauté Ajouter
Annotations FAQ
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,