1. 程式人生 > >自定義類型轉換

自定義類型轉換

args main class ati this exceptio 自定義類型 測試 blog

這裏說點平常不怎麽用的知識(也不建議在項目中運行,因為增加閱讀代碼成本)。自定義類型轉換,有兩類型:一是類型間隱式轉換,一是類型間強制轉換。
定義格式:
訪問修飾符 static 轉換修飾操作符 operator 類型(參數列表);
轉換修飾操作符:

  • explicit用於聲明必須強制轉換的自定義類型轉換操作符
  • implicit用於聲明隱式的自定義類型轉換操作符
    註意隱式轉換由系統自行調用,因此不建議再隱式轉換中拋出任何異常。
    下面看一個簡單的小栗子:

    class MyAge
    {
        public int Age { get; set; }
        public MyAge() { }
        private MyAge(int age)
        {
            this.Age = age;
        }
    
        // int到MyAge的隱式轉換
        public static implicit operator MyAge(int year)
        {
            return new MyAge(year > 1980 ? (year - 1980) : -1);
        }
        // MyAge到int的顯示轉換
        public static explicit operator int(MyAge age)
        {
            if(age == null)
            {
                throw new ArgumentNullException("參數為空");
            }
    
            return age.Age;
        }
    }

    調用測試:

        static void Main(string[] args)
        {
            int year = 2008;
            //隱式轉換
            MyAge myAge = year;
            //顯示轉換
            int age = (int)myAge;
            Console.WriteLine(age);
            Console.ReadKey();
        }

自定義類型轉換