Exportieren (0) Drucken
Alle erweitern
Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
Übersetzung
Original

ValueType-Klasse

Stellt die Basisklasse für Werttypen bereit.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)

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

Der ValueType-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Geschützte MethodeUnterstützt von XNA Frameworkaey3s293.PortableClassLibrary(de-de,VS.100).gifValueTypeInitialisiert eine neue Instanz der ValueType-Klasse.
Zum Seitenanfang

  NameBeschreibung
Öffentliche MethodeUnterstützt von XNA Frameworkaey3s293.PortableClassLibrary(de-de,VS.100).gifEqualsGibt an, ob diese Instanz und ein angegebenes Objekt gleich sind. (Überschreibt Object.Equals(Object).)
Geschützte MethodeUnterstützt von XNA Frameworkaey3s293.PortableClassLibrary(de-de,VS.100).gifFinalize Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.)
Öffentliche MethodeUnterstützt von XNA Frameworkaey3s293.PortableClassLibrary(de-de,VS.100).gifGetHashCodeGibt den Hashcode für diese Instanz zurück. (Überschreibt Object.GetHashCode().)
Öffentliche MethodeUnterstützt von XNA Frameworkaey3s293.PortableClassLibrary(de-de,VS.100).gifGetTypeRuft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Geschützte MethodeUnterstützt von XNA Frameworkaey3s293.PortableClassLibrary(de-de,VS.100).gifMemberwiseCloneErstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Öffentliche MethodeUnterstützt von XNA Frameworkaey3s293.PortableClassLibrary(de-de,VS.100).gifToStringGibt den voll qualifizierten Typnamen dieser Instanz zurück. (Überschreibt Object.ToString().)

In XNA Framework 3.0 wird dieser Member von Object.ToString().


In   wird dieser Member von Object.ToString().
Zum Seitenanfang

ValueType überschreibt die virtuellen Methoden von Object mit für Werttypen besser geeignete Implementierungen. Siehe auch Enum. Diese erbt von ValueType.

Datentypen werden in Werttypen und Referenztypen unterteilt. Werttypen werden entweder Stapeln oder inline in einer Struktur zugewiesen. Referenztypen werden Heaps zugewiesen. Verweis- und Werttypen werden von der letztendlichen Basisklasse Object abgeleitet. In Fällen, in denen ein Werttyp wie ein Objekt verwendet werden muss, wird im Heap ein Wrapper reserviert, der den Werttyp als Verweisobjekt darstellt. Anschließend wird der Werttyp in den Wrapper kopiert. Der Wrapper wird markiert, sodass das System erkennt, dass dieser einen Werttyp enthält. Dieser Vorgang wird als Boxing und der umgekehrte Vorgang wird als Unboxing bezeichnet. Boxing und Unboxing ermöglichen, dass jeder Typ als ein Objekt behandelt werden kann.

Die ValueType-Struktur dient zwar als Basisklasse für Werttypen in der .NET Framework, wird aber im Allgemeinen nicht direkt in Code verwendet. Es kann jedoch als Parameter in Methodenaufrufen verwendet werden, um mögliche Argumente auf Werttypen statt auf alle Objekte zu beschränken oder einer Methode zu erlauben, eine Reihe von verschiedenen Werttypen zu behandeln. Im folgenden Beispiel wird veranschaulicht, wie ValueType verhindert, dass Verweistypen an Methoden übergeben werden. Eine Klasse mit dem Namen Utility wird definiert, die vier Methoden enthält: IsNumeric, die angibt, ob das Argument eine Zahl ist; IsInteger, die angibt, ob das Argument eine ganze Zahl ist; IsFloat, die angibt, ob das Argument eine Gleitkommazahl ist und Compare, die die Beziehung zwischen zwei numerischen Werten angibt. In jedem Fall haben die Methodenparameter den Typ ValueType, und es wird verhindert, dass Verweistypen an die Methoden übergeben werden.


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


Im folgenden Beispiel werden Aufrufe der Methoden der Utility-Klasse veranschaulicht.


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

Unterstützt in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Unterstützt in:

Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Datum

Versionsgeschichte

Grund

Oktober 2010

Beispiel hinzugefügt.

Kundenfeedback.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft