implicit (C# 參考)

更新:2007 年 11 月

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

藉由消除不必要的轉換 (Cast),隱含轉換 (Conversion) 可提高原始程式碼的可讀性。不過,因為隱含轉換 (Conversion) 不需要程式設計人員明確轉換 (Cast) 其型別,因此必須謹慎使用,以避免產生非預期的結果。一般說來,隱含轉換運算子應該不會擲回例外狀況 (Exception) 也不會遺失資訊,所以即使程式設計人員沒有注意也可以安全地使用。若轉換運算子無法符合這些條件,應將其標記為 explicit。如需詳細資訊,請參閱使用轉換運算子

C# 語言規格

如需詳細資訊,請參閱 C# 語言規格中的下列章節:

  • 6.1 隱含轉換

  • 10.9.3 轉換運算子

請參閱

工作

HOW TO:在結構之間實作使用者定義的轉換 (C# 程式設計手冊)

概念

C# 程式設計手冊

參考

C# 關鍵字

explicit (C# 參考)

operator (C# 參考)

其他資源

C# 參考