Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

ValueType (Clase)

Proporciona la clase base para tipos de valores.

Espacio de nombres:  System
Ensamblado:  mscorlib (en mscorlib.dll)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class ValueType

El tipo ValueType expone los siguientes miembros.

  NombreDescripción
Método protegidoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsValueTypeInicializa una nueva instancia de la clase ValueType.
Arriba

  NombreDescripción
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsEqualsIndica si esta instancia y un objeto especificado son iguales. (Invalida a Object.Equals(Object)).
Método protegidoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsFinalize Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object).
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsGetHashCodeDevuelve el código hash de esta instancia. (Invalida a Object.GetHashCode()).
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsGetType Obtiene el Type de la instancia actual. (Se hereda de Object).
Método protegidoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsMemberwiseClone Crea una copia superficial del Object actual. (Se hereda de Object).
Método públicoCompatible con XNA FrameworkToStringDevuelve el nombre de tipo completo de esta instancia. (Invalida a Object.ToString()).

En XNA Framework 3.0, este miembro se hereda de Object.ToString().
Arriba

ValueType reemplaza los métodos virtuales de Object por implementaciones más apropiadas de tipos de valores. Vea también Enum, que se hereda de ValueType.

Los tipos de datos se encuentran separados en tipos de valor y tipos de referencia. Los tipos de valor se encuentran situados en pila o en línea en una estructura. Los tipos de referencia se encuentran en montones. Tanto los tipos de valor como los tipos de referencia se derivan del Object de la última clase base. En aquellos casos en los que un tipo de valor necesita actuar como un objeto, se coloca en el montón un contenedor que hace que el tipo de valor parezca un objeto de referencia y el valor del tipo de valor se copia en éste. El contenedor aparece marcado para que el sistema sepa que contiene un tipo de valor. A este proceso se le conoce como conversión boxing y al proceso inverso se le conoce como conversión unboxing. Las conversiones boxing y unboxing permiten que cualquier tipo sea tratado como un objeto.

Aunque ValueType es la clase base implícita para los tipos de valor, no puede crear una clase que herede de ValueType directamente. En su lugar, los compiladores individuales proporcionan una palabra clave o una construcción de lenguaje (como struct en C# y StructureEnd Structure en Visual Basic) para admitir la creación de tipos de valor.

Aparte de actuar como la clase base para los tipos de valor en .NET Framework, la estructura ValueType no se utiliza directamente en el código. Sin embargo, se puede utilizar como un parámetro en llamadas al método para restringir los posibles argumentos a los tipos de valor en lugar de todos los objetos o permitir a un método administrar varios tipos de valor diferentes. El siguiente ejemplo muestra cómo ValueType evita que los tipos de referencia se pasen a los métodos. Define una clase denominada Utility que contiene cuatro métodos: IsNumeric, que indica si su argumento es un número; IsInteger, que indica si su argumento es un entero; IsFloat, que indica si su argumento es un número de punto flotante y Compare, que indica la relación entre dos valores numéricos. En cada caso, los parámetros de método son del tipo ValueTypey se evita pasar los tipos de referencia a los métodos.


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;
   }
}


En el ejemplo siguiente se muestra cómo llamar a los métodos de la clase 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

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

.NET para aplicaciones de la Tienda Windows

Compatible con: Windows 8

.NET para aplicaciones de Windows Phone

Compatible con: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft