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

Обновлен: Ноябрь 2007

Ключевое слово implicit служит для объявления неявного оператора преобразования пользовательского типа. Этот оператор обеспечивает неявное преобразование между пользовательским типом и другим типом, если при преобразовании исключается утрата данных.

Пример

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

Неявное преобразование позволяет устранить ненужные операции приведения и повышает понятность кода. Однако поскольку при неявных преобразованиях разработчикам не требуется явным образом приводить один тип к другому, нужно осторожно применять неявные преобразования, чтобы обеспечить правильные результаты. В общем случае операторы неявного преобразования не должны создавать исключений и не должны терять данные, чтобы их можно было безопасно использовать. Если оператор преобразования не соответствует таким условиям, его нужно пометить словом explicit. Дополнительные сведения см. в разделе Использование операторов преобразования.

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

Дополнительные сведения см. в следующем разделе документа Спецификация языка C#.

  • 6.1 Неявные преобразования

  • 10.9.3 Операторы преобразования

См. также

Задачи

Практическое руководство. Реализация определенных пользователем преобразований между структурами (руководство по программированию на C#)

Основные понятия

Руководство по программированию в C#

Ссылки

Ключевые слова C#

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

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

Другие ресурсы

Справочник по C#