• 自定义类型转换


    这里说点平常不怎么用的知识(也不建议在项目中运行,因为增加阅读代码成本)。自定义类型转换,有两类型:一是类型间隐式转换,一是类型间强制转换。
    定义格式:
    访问修饰符 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();
    		}
    
  • 相关阅读:
    集合合并
    非递减有序集合合并
    有序的双链表的实现
    单链表的实现
    构造有序的单链表
    约瑟夫环问题
    javaweb学习笔记
    Intellij IDEA快捷键
    JAVA:创建类和对象
    JAVA:成员变量和局部变量的区别
  • 原文地址:https://www.cnblogs.com/LoveTomato/p/8530217.html
Copyright © 2020-2023  润新知