implicit (Справочник по C#)implicit (C# Reference)

Ключевое слово implicit служит для объявления неявного оператора преобразования пользовательского типа.The implicit keyword is used to declare an implicit user-defined type conversion operator. Этот оператор обеспечивает неявное преобразование между пользовательским типом и другим типом, если при преобразовании исключается утрата данных.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.

ПримерExample

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

Неявное преобразование позволяет устранить ненужные операции приведения и повышает удобочитаемость исходного кода.By eliminating unnecessary casts, implicit conversions can improve source code readability. Однако поскольку при неявных преобразованиях разработчикам не требуется явным образом приводить один тип к другому, нужно осторожно применять неявные преобразования, чтобы обеспечить правильные результаты.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. В общем случае операторы неявного преобразования не должны создавать исключений и не должны терять данные, чтобы их можно было безопасно использовать.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. Если оператор преобразования не соответствует таким условиям, его нужно пометить словом explicit.If a conversion operator cannot meet those criteria, it should be marked explicit. Дополнительные сведения см. в разделе Использование операторов преобразования.For more information, see Using Conversion Operators.

Спецификация языка C#C# language specification

Дополнительные сведения см. в спецификации языка C#.For more information, see the C# Language Specification. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.The language specification is the definitive source for C# syntax and usage.

См. такжеSee also