implicit (C#-Referenz)implicit (C# Reference)

Das implicit-Schlüsselwort wird verwendet, um einen impliziten benutzerdefinierten Typkonvertierungsoperator zu deklarieren.The implicit keyword is used to declare an implicit user-defined type conversion operator. Verwenden Sie es zur Aktivierung impliziter Konvertierungen zwischen einem benutzerdefinierten Typ und einen anderen Typ, wenn die Konvertierung mit Sicherheit nicht zu einem Datenverlust führt.Use it to enable implicit conversions between a user-defined type and another type, if the conversion is guaranteed not to cause a loss of data.

BeispielExample

class Digit
{
    public Digit(double d) { val = d; }
    public double val;
    // ...other members

    // User-defined conversion from Digit to double
    public static implicit operator double(Digit d)
    {
        return d.val;
    }
    //  User-defined conversion from double to Digit
    public static implicit operator Digit(double d)
    {
        return new Digit(d);
    }
}

class Program
{
    static void Main(string[] args)
    {
        Digit dig = new Digit(7);
        //This call invokes the implicit "double" operator
        double num = dig;
        //This call invokes the implicit "Digit" operator
        Digit dig2 = 12;
        Console.WriteLine("num = {0} dig2 = {1}", num, dig2.val);
        Console.ReadLine();
    }
}

Durch Eliminierung unnötiger Umwandlungen können implizite Konvertierungen die Lesbarkeit des Quellcodes verbessern.By eliminating unnecessary casts, implicit conversions can improve source code readability. Da implizite Konvertierungen aber nicht erfordern, dass Programmierer explizit von einem Typ in den anderen umwandeln, muss darauf geachtet werden, um unerwartete Ergebnisse zu vermeiden.However, because implicit conversions do not require programmers to explicitly cast from one type to the other, care must be taken to prevent unexpected results. Im Allgemeinen sollten implizite Konvertierungsoperatoren keine Ausnahmen auslösen und keine Informationen verlieren, sodass sie problemlos ohne Wissen des Programmierers verwendet werden können.In general, implicit conversion operators should never throw exceptions and never lose information so that they can be used safely without the programmer's awareness. Wenn ein Konvertierungsoperator diese Kriterien nicht erfüllen kann, sollte er als explicit markiert werden.If a conversion operator cannot meet those criteria, it should be marked explicit. Weitere Informationen finden Sie unter Verwenden von Konvertierungsoperatoren.For more information, see Using Conversion Operators.

C#-ProgrammiersprachenspezifikationC# Language Specification

Weitere Informationen erhalten Sie unter C#-Sprachspezifikation.For more information, see the C# Language Specification. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.The language specification is the definitive source for C# syntax and usage.

Siehe auchSee Also

C#-ReferenzC# Reference
C#-ProgrammierhandbuchC# Programming Guide
C#-SchlüsselwörterC# Keywords
explicitexplicit
Operator (C#-Referenz)operator (C# Reference)
Gewusst wie: Implementieren von benutzerdefinierten Konvertierungen zwischen StrukturenHow to: Implement User-Defined Conversions Between Structs