operator 关键字来重载内置运算符,或提供类或结构声明中的用户定义转换。它可以定义不同类型之间采用何种转化方式和转化的结果。

operator用于定义类型转化时可采用2种方式,隐式转换(implicit)和显示转换(explicit)

一般定义方式为

public static implicit 目标类型(被转化类型 变量参数)
{
return 目标类型结果;
} public static explicit 目标类型(被转化类型 变量参数)
{
return 目标类型结果;
}

代码案例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace 自定义装换
{
class Program
{
static void Main(string[] args)
{
myclass mc = 1;//通过隐式装换,生成myclass对象
Console.WriteLine(mc.Value);
myclass mc2 = new myclass(2);
Console.WriteLine((int)mc2);//显示转化,调用myclass至int的处理方法
Console.WriteLine(mc2);//隐式转化,调用myclass至string的处理方法 }
} class myclass
{
private int value;//声明value私有字段
public int Value//声明只读属性
{
get { return value; }
}
public myclass(int value)//构造函数
{
this.value = value;
} public static explicit operator int(myclass mc)//显示声明的myclass转int类处理方法
{
return mc.value;
}
public static implicit operator myclass(int value)//隐式声明的int转myclass类处理方法
{
return new myclass(value);
}
public static implicit operator string(myclass mc)//隐式声明的myclass转string类处理方法
{
return ("定义的myclass类string类型转化结果");
}
} }

结果

【注意】:1.转换运算符将源类型转换为目标类型。 源类型提供转换运算符。 与隐式转换不同,必须通过强制转换的方式来调用显式转换运算符。 如果转换操作可能导致异常或丢失信息,则应将其标记为 explicit。这可以防止编译器无提示地调用可能产生无法预见后果的转换操作。

operator 重载内置运算符的更多相关文章

  1. [转] Hive 内置函数

    原文见:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF 1.内置运算符1.1关系运算符 运算符 类型 说明 A ...

  2. Hive 函数之内置运算符

    本章介绍Hive的内置运算符.在Hive有四种类型的运算符: 关系运算符 算术运算符 逻辑运算符 复杂运算符 关系运算符 这些操作符被用来比较两个操作数.下表描述了在Hive中可用的关系运算符: 运算 ...

  3. Hive 内置函数

    原文见:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF 1.内置运算符1.1关系运算符 运算符 类型 说明 A ...

  4. new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。

    new运算符 - JavaScript | MDN https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operator ...

  5. 前端笔记之JavaScript面向对象(二)内置构造函数&相关方法|属性|运算符&继承&面向对象

    一.复习 1.1复习上下文 函数的调用方式 上下文 fun() window obj.fun() obj box.onclick = fun box setInterval(fun,1000) set ...

  6. python 三元运算符、推导式、递归、匿名函数、内置函数

    三目运算符 # 三目(元)运算符:就是 if...else...语法糖 # 前提:简化if...else...结构,且两个分支有且只有一条语句 # 注:三元运算符的结果不一定要与条件直接性关系 cmd ...

  7. day 14 三元运算符,列表字典推导式,递归,匿名函数,内置函数(排序,映射,过滤,合并)

    一.三元运算符 就是if.....else..... 语法糖 前提:if和else只有一条语句 #原始版 cmd=input('cmd') if cmd.isdigit(): print('1') e ...

  8. day14 十四、三元运算符,推导式,匿名内置函数

    一.三元(目)运算符 1.就是if...else...语法糖 前提:if和else只有一条语句 # 原来的做法 cmd = input('cmd:>>>') if cmd.isdig ...

  9. Day 14 三元运算符,列表推导式,内置函数

    三目运算符 ```python# 三目(元)运算符:就是 if...else...语法糖# 前提:简化if...else...结构,且两个分支有且只有一条语句# 注:三元运算符的结果不一定要与条件直接 ...

随机推荐

  1. Mysql找回丢失密码

    (先进入root权限):# /etc/init.d/mysql stop# mysqld_safe --user=mysql --skip-grant-tables --skip-networking ...

  2. web 架构 /http协议,状态码,django中常用命令

    什么是web应用? web应用 架构 :B/S架构 | C/S架构 网站:BS架构其实就是应用程序: B是浏览器 S是sever(实现了wsgi协议,实现了socket的服务端) + applicat ...

  3. 10.3.1 iOS启动画面横屏是怎么回事?

    产生这个问题的原因是编译旧版Delphi建立的项目,二种解决方法: 1.用 10.3.1 重建空工程,再把使用的单元文件重新加进来.这个操作有点麻烦,尤其对于使用单元多的文件,不过,有种方法,就是先把 ...

  4. ubuntu安装nodejs,npm live-server

    sudo apt-get install curl 先安装的是curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/in ...

  5. scala quick check

    Scala 特性   面向对象特性 函数式编程 Scala也是一种函数式语言,其函数也能当成值来使用.Scala提供了轻量级的语法用以定义匿名函数,支持高阶函数,允许嵌套多层函数,并支持柯里化.Sca ...

  6. spacemacs conf

    > da100 src $ cat ~/.spacemacs (defun dotspacemacs/layers () (setq-default dotspacemacs-distribut ...

  7. awr脚本使用dump导出导入

    实际工作中,存在这么一种场景.客户现场分析问题,无法立即得出结论,且无法远程服务器,因此对于服务器中的awr信息,如何提取是一个问题,oracle有脚本可以对服务器中以db为单位导出awr基表的dum ...

  8. Rodrigues(罗德里格斯)旋转公式推导

    1. 2.推导过程:我们的目的是求得vrot,所以应该求得v||和vrot在垂直于k方向的投影向量. 其中, 俯视图看: 此外,另一种表示方法为: R可以看作旋转矩阵.

  9. django安装命令

    通过pip安装Django   ==指定版本号 pip install Django==2.0.2 查看djangoshifou安装成功:1.进入python ,2.import   django 查 ...

  10. Java中如何正确的将byte[]数组转化为String类型?

    很多人在编程时,总是喜欢用一下方法将数组转为字符串:(a为byte数组) String s=a.toString(); 可是每次返回的时候,新手看来返回的结果是乱码,比如说我,写RSA算法时,没有注意 ...