黑马程序员-------运算符重载(三)
来源:互联网 发布:it before 编辑:程序博客网 时间:2024/05/18 03:01
转换运算符的重载,其中的关键字是implicit (隐式转换),explicit(显式转换)
格式如下: public static implicit/explicit operator targetType ( source type o)
但是,转换运算符也有几点需要注意:
一、这两种运算符主要用于自定义的类之间的转换,或者,自定义类与内置类型的转换,但是不能全用于内置类型的转换,也就是说,至少要有一种是自定义的类型。
二、基类与派生类也无法再其中转换,而object为所有类的基类,因此,也不允许做转换。
三、自己在定义的时候要明确使用显示转换还是隐式转换,因为,如果用隐式转换,是系统自动完成的,很可能遇到数据丢失的情况,因此,在定义转换方式之前,要确定应该用那种方式。
下面是定义了一个转换的过程:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _06
{
class Program
{
static void Main(string[] args)
{
long l;
Rangle r = new Rangle(10, 20);
l = r;
Console.WriteLine(l);
Squre s = (Squre)r;
l = s.sarea;
Console.WriteLine("s.area="+l);
Rangle r1 = (Rangle)s;
Console.WriteLine(r1.length);
Console.WriteLine(r1.rarea);
Console.ReadKey();
}
}
class Rangle
{
public int rarea ;
public int length;
public int width;
public Rangle(int length,int width)
{
this.length = length;
this.width = width;
rarea=length*width;
}
public static implicit operator long(Rangle r)
{
long l = r.rarea;
return l;
}
public static explicit operator Squre(Rangle r)
{
Squre s = new Squre(r.width);
return s;
}
}
class Squre
{
public long sarea;
public int m;
public Squre(int m)
{
this.m = m;
sarea = m * m;
}
public static explicit operator Rangle(Squre s)
{
int m1 = (int)s.sarea;
Rangle r = new Rangle(m1,m1);
return r;
}
}
}
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
- 黑马程序员-------运算符重载(三)
- 黑马程序员-------运算符重载(二)
- 黑马程序员----运算符重载
- 黑马程序员_Java没有运算符重载?
- 黑马程序员_C#运算符重载
- 黑马程序员-------运算符重载(一)
- 黑马程序员_重载运算符
- 黑马程序员_Java没有运算符重载
- (三 )运算符重载
- C++运算符重载(三)
- 黑马程序员-运算符
- 重载运算符之三
- 运算符重载(三)不带友元
- 黑马程序员--C#基础(三)-->运算符,语句,控制台输入输出
- 黑马程序员——Java基础(三)之运算符、键盘录入、流程控制语句
- 黑马程序员(三)
- 十九、运算符重载(三)String类的改进实现、[]运算符重载、+运算符重载、+=运算符重载、<<运算符重载、>>运算符重载
- 4.黑马程序员-运算符
- 网络设备配置摘记
- Linux内核中的Kconfig、Makefile、.config
- A Knight's Journey
- OpenGL里用gluTessBeginPolygon画带孔和凹多边形需要非常注意的一个问题!
- Oracle与MySQL存储过程以及游标使用的区别
- 黑马程序员-------运算符重载(三)
- sscanf函数的用法
- 求两个数的最大公约数
- Hadoop MapReduce Task Log 无法查看syslog问题
- eclipse 遇到的问题
- ubuntu下中文输入法的安装--fcitx(可运行版)
- java 图片压缩 缩放
- Linux下的线程锁的机制(源代码)
- JAVA 文件上传下载