Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Decimal.Equals-Methode: (Decimal)

 

Veröffentlicht: Oktober 2016

Gibt einen Wert zurück, der angibt, ob diese Instanz und ein angegebenes Decimal-Objekt den gleichen Wert darstellen.

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

public bool Equals(
	decimal value
)

Parameter

value
Type: System.Decimal

Ein mit dieser Instanz zu vergleichendes Objekt.

Rückgabewert

Type: System.Boolean

true, wenn value gleich dieser Instanz ist, andernfalls false.

This method implements the T:System.IEquatable`1 interface, and performs slightly better than M:System.Decimal.Equals(System.Object) because it does not have to convert the value parameter to an object.

If value has fewer bits (is narrower) than the instance type, some programming languages perform an implicit widening conversion that transforms the value of the parameter into a value with more bits.

For example, suppose the instance type is T:System.Int32 and the parameter type is T:System.Byte. The Microsoft C# compiler generates instructions to represent the value of the parameter as an T:System.Int32 object, then generates a M:System.Int32.CompareTo(System.Int32) method to compare the T:System.Int32 instance and parameter representation.

Consult your programming language's documentation to determine whether its compiler performs implicit widening conversions on numeric types.

Hinweise für Aufrufer:

Compiler overload resolution may account for an apparent difference in the behavior of the two M:System.Decimal.Equals(System.Object) method overloads. If an implicit conversion between the obj argument and a T:System.Decimal is defined and the argument is not typed as an T:System.Object, compilers may perform an implicit conversion and call the M:System.Decimal.Equals(System.Decimal) method. Otherwise, they call the M:System.Decimal.Equals(System.Object) method, which always returns false if its obj argument is not a T:System.Decimal value. The following example illustrates the difference in behavior between the two method overloads. In the case of all primitive integral types, including both signed and unsigned types, the first comparison returns true because the compiler automatically performs a widening conversion and calls the M:System.Decimal.Equals(System.Decimal) method, whereas the second comparison returns false because the compiler calls the M:System.Decimal.Equals(System.Object) method.

using System;

public class Example
{
   static decimal value = 112m;

   public static void Main()
   {
      byte byte1= 112;
      Console.WriteLine("value = byte1: {0,17}", value.Equals(byte1));
      TestObjectForEquality(byte1);

      short short1 = 112;
      Console.WriteLine("value = short1: {0,17}", value.Equals(short1));
      TestObjectForEquality(short1);

      int int1 = 112;
      Console.WriteLine("value = int1: {0,19}", value.Equals(int1));
      TestObjectForEquality(int1);

      long long1 = 112;
      Console.WriteLine("value = long1: {0,18}", value.Equals(long1));
      TestObjectForEquality(long1);

      sbyte sbyte1 = 112;
      Console.WriteLine("value = sbyte1: {0,17}", value.Equals(sbyte1));
      TestObjectForEquality(sbyte1);

      ushort ushort1 = 112;
      Console.WriteLine("value = ushort1: {0,17}", value.Equals(ushort1));
      TestObjectForEquality(ushort1);

      uint uint1 = 112;
      Console.WriteLine("value = uint1: {0,19}", value.Equals(uint1));
      TestObjectForEquality(uint1);

      ulong ulong1 = 112;
      Console.WriteLine("value = ulong1: {0,18}", value.Equals(ulong1));
      TestObjectForEquality(ulong1);

      float sng1 = 112;
      Console.WriteLine("value = sng1: {0,21}", value.Equals(sng1));
      TestObjectForEquality(sng1);

      double dbl1 = 112;
      Console.WriteLine("value = dbl1: {0,21}", value.Equals(dbl1));
      TestObjectForEquality(dbl1);
   }

   private static void TestObjectForEquality(Object obj)
   {
      Console.WriteLine("{0} ({1}) = {2} ({3}): {4}\n",
                        value, value.GetType().Name,
                        obj, obj.GetType().Name,
                        value.Equals(obj));
   }
}
// The example displays the following output:
//       value = byte1:             True
//       112 (Double) = 112 (Byte): False
//
//       value = short1:             True
//       112 (Double) = 112 (Int16): False
//
//       value = int1:               True
//       112 (Double) = 112 (Int32): False
//
//       value = long1:              True
//       112 (Double) = 112 (Int64): False
//
//       value = sbyte1:             True
//       112 (Double) = 112 (SByte): False
//
//       value = ushort1:             True
//       112 (Double) = 112 (UInt16): False
//
//       value = uint1:               True
//       112 (Double) = 112 (UInt32): False
//
//       value = ulong1:              True
//       112 (Double) = 112 (UInt64): False
//
//       value = dec1:                 False
//       112 (Double) = 112 (Decimal): False
//
//       value = sng1:                True
//       112 (Double) = 112 (Single): False

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 2.0
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: