zoukankan      html  css  js  c++  java
  • 自定义类型转换

    这里说点平常不怎么用的知识(也不建议在项目中运行,因为增加阅读代码成本)。自定义类型转换,有两类型:一是类型间隐式转换,一是类型间强制转换。
    定义格式:
    访问修饰符 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();
    		}
    
  • 相关阅读:
    《怎样解题》-波利亚
    BZOJ2631 tree
    BZOJ3669 [Noi2014]魔法森林
    BZOJ 2049 [Sdoi2008]Cave 洞穴勘测
    BZOJ2002 [Hnoi2010]Bounce 弹飞绵羊
    动态树入门
    树链剖分入门-Hdu3966 Aragorn's Story
    BZOJ1146 [CTSC2008]网络管理Network
    树的表示方法
    树状数组
  • 原文地址:https://www.cnblogs.com/LoveTomato/p/8530217.html
Copyright © 2011-2022 走看看