黑马程序员 小知识—学习用户自定义转换
来源:互联网 发布:淘宝网店促销 编辑:程序博客网 时间:2024/06/11 06:38
我们之前接触到的类型转制有数值间的转换、装箱与拆箱、有继承关系的转换。 除了这些标准转换,我们不可以为类和结构定义隐式和显式转换。
用户自定义转换的语法:
1.除了implicit和explicit关键字之外,隐式和显示转换的声明语法是一样的。
2.需要public和static修饰符。
例如,下面代码给出了一个转换语法的事例,它转换一个Person类型的对象为int。
public static implicit operator int(Person p)
{
teturn p.Age;
}
用户自定义转换的约束:
1.只可以为类和结构定义用户自定义转换。
2.不能重定义标准隐式转换或显示转换。
3.对于源类型S和目标类型T,如下的命题是为真的。
1).S和T必须是不同类型。
2).S和T不能通过继承关联。也就是说,S不能继承自T,而T也不能从S继承。
3).S和T都不能是接口类型或object类型。
4).转换运算符必须是S或T的成员。
4.对于相同的源和目标类型,我们不能声明两个转换,一个是隐式转换面另外一个显示转换。
用户自定义转换的示例。如下代码定义了一个叫做Person的类,它包含了人的名字和年龄。这个类还定义了两个隐式转换,第一个将int转换为Person对象。第二个将Person对象转换为int值,目标int的值是人的年龄。
class Person
{
public string Name { set; get; }
public int Age { set; get; }
public Person(string name, int age)
{
Name = name;
Age = age;
}
public static explicit operator int(Person p)
{
return p.Age;
}
public static implicit operator Person(int i)
{
return new Person("匿名", i);
}
}
class Program
{
static void Main(string[] args)
{
Person p1 = 20;
Console.WriteLine("Person Info:{0},{1}", p1.Name, p1.Age);
Person p2 = new Person("美女", 18);
int age = (int)p2;
Console.WriteLine("Age Info:{0}", age);
Console.ReadKey();
}
}
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
- 黑马程序员 小知识—学习用户自定义转换
- 黑马程序员-----------小知识
- 黑马程序员—SQL基础小知识
- 黑马程序员----OC学习之小知识学习
- 黑马程序员--学习中的杂乱知识小笔记
- 黑马程序员—学习小心知识整理
- 黑马程序员java基础笔记循环、进制转换小知识集合
- 黑马程序员:Servlet的一点小知识
- 黑马程序员10--java加强小知识
- 黑马程序员--Winform有关的小知识
- 黑马程序员--代码块小知识总结
- 黑马程序员_java中的小知识
- 黑马程序员-ArrayList与HashSet小知识
- 黑马程序员--IOS杂碎小知识汇总
- 黑马程序员-1.java入门小知识
- 黑马程序员-java基础-基础小知识
- 黑马程序员_java学习日记_Java基础小知识学习整理
- 黑马程序员—jquery学习知识小结(1)
- [Unity3D]异步加载游戏场景与异步加载游戏资源进度条
- 彻底搞懂字符编码(unicode,mbcs,utf-8,utf-16,utf-32,big endian,little endian...)
- 程序设计实现笔记——排错
- 编程语言系列(一)--C语言基础知识点总结
- 练习赛11.删数问题
- 黑马程序员 小知识—学习用户自定义转换
- UVA10020- Minimal coverage
- 高效数据重删中表至关重要
- c++ 正则表达式
- 【ASO潜规则】之 SEO如何给我的应用带来15万个下载量
- 单例的两种模式
- android 自己实现日历功能
- 黑马程序员 一秒学会Lambda表达式
- Debug这个词是从哪来的呢