自定义类型转换

这里说点平常不怎么用的知识(也不建议在项目中运行,因为增加阅读代码成本)。自定义类型转换,有两类型:一是类型间隐式转换,一是类型间强制转换。

定义格式:

访问修饰符 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();
        }

原文地址:https://www.cnblogs.com/LoveTomato/p/8530217.html

时间: 2024-11-09 05:53:13

自定义类型转换的相关文章

Struts2自定义类型转换,和处理类型转换错误

Struts2自定义类型转换: 从前台接受到的类型全部是字符串,Struts2自带的一些基本类型转换有时不能满足我们的特别需要,如:日期字符串输入格式,还有一些自定义的类,直接传到后台,我们需要一些自己的转换器: 例: 我有一个Point类型: package cn.jnit.bean; public class Point { private Integer x; private Integer y; public Point() { } public Point(Integer x, Int

Spring MVC JSON自定义类型转换(续)

前面提到了两种转换类型的方法(Spring MVC JSON自定义类型转换),这里针对Json转换提供一种更简便的方法. 通过配置全局的日期转换来避免使用麻烦的注解. 首先用到了一个简单的日期工具类DateUtil.java /** * DateUtil类 * * @author liuzh */ public class DateUtil { public static final String Y_M_D = "yyyy-MM-dd"; public static final St

在复数类中自定义类型转换函数实现复数和非复数之间的运算

实现复数+double型数据,并且打印运算后实部上的数据 #include <iostream> using namespace std; class Complex { public: Complex( )//定义默认构造函数初始化复数 { real=0; imag=0; } //使用初始化表初始化复数 Complex(double r, double i):real(r),imag(i){} //定义自定义类型转换函数 operator double() { return real; }

不可或缺 Windows Native (24) - C++: 运算符重载, 自定义类型转换

[源码下载] 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 运算符重载 自定义类型转换 示例CppOperator.h #pragma once #include <string> using namespace std; namespace NativeDll { class CppOperator { public: string Demo(); }; } CppOperator.cpp /* * 运算符重载, 自定义类型转换 */ #include &qu

【.NET深呼吸】基础:自定义类型转换

照例,老周在开始吹牛之前,先讲讲小故事,这是朋友提出的建议,老TMD写技术有什么了不起的,人人都会写.后来老周想想,也确实,代码谁不会写,能写到有品位有感悟,就不容易做到.于是,老周接受了该朋友的建议. 有初入职场的弟弟妹妹们经常诉苦,为啥,因为常常被人骂,被老员工骂,被老板骂.好像自己做的事永远都是错的,于是感觉很受打击,很伤心. 这里老周必须提醒各位,小伙子应该坚强一点,小妹妹们也不要过于绝望,千万不要因为这些事情去做傻事.西湖景观很美,“欲把西湖比西了,淡妆浓抹总相宜”,但是,如果有人跳西

AutoMapper搬运工之自定义类型转换

前言 最近还挺忙,还有点累,一直都没更新了,实在是懒呀.正题之前先说点别的,最近公司要扩张了,需要大量开发,领导说推荐有钱可以拿,如此好机会,我就趁机做个广告.ShippingRen.com招募.NET高级开发,坐标上海,有兴趣的给我留言,或者加我qq:1029183866,加的时候请说明博客园看到. 另外在说说这几天,工作忙是不可避免,业余也在准备自己的网站www.capqueen.com(目前还在备案中),准备用目前会的技术从无到有建立一个CMS(博客),到时候也会发一些文章和大家分享.最近

Spring MVC JSON自定义类型转换

类型有很多,这里只用日期为例说明. 在Spring MVC中存在两大类的类型转换,一类是Json,一个是Spring的Binder转换. JSON: 使用Json转换时,可以如下使用: public class Test { private Date createdate; @JsonSerialize(using = DateYMDHMSJsonSerializer.class) public Date getCreatedate() { return createdate; } @JsonD

自定义类型转换器之TypeConverter

C#提供了很多类型转换的方法如ConvertToInt.int.Parse.int.tryParse等等,这些方法都能将一个C#的基本数据类型转换成另一个C#基本数据类型.那么.既然如此,C#肯定会提供某种机制来让我们编写自定义的类型转换器. so.C#提供了一个类型-TypeConverter来帮助我们完成类型转换的功能,TypeConverter类就是将一种类型(object,当然可以是任意类型)转换成一种类型(一般为string,当然也可以是其他的类型).或者将另一种类型转换回来. 1.所

struts2自定义类型转换

struts2 类型转换很智能,他会帮我们自动转换类型,struts会自动转换4类8种原生数据类型和String ,Date,当我们自己定义的类型就不会转换了,需要我们自己去编写类型转换器. 原理:类型转换有两个类,DefaultTypeConverter和Struts2TypeConverter,Struts2TypeConverter继承DefaultTypeConveter,DefaultTypeConverter里面就一个方法convertValue. package com.sheng