推荐给初学者,如何在 C# 中自定义类型转换
2011-07-12 11:05 音乐让我说 阅读(629) 评论(0) 编辑 收藏 举报C# 中的类型转换包括:显式类型转换和隐式类型转换。今天我来介绍如何在 C# 中自定义类型转换。
首先是值类型的自定义类型转换:
public struct MyStruct { // 自定义类型转:整形 显式转换为 MyStruct 型 static public explicit operator MyStruct(int myNo) { return new MyStruct(myNo); } }
然后是引用类型的自定义类型转换:
public class MyClass { // 自定义类型转换:MyClass 隐式转换为 string 型 static public implicit operator string(MyClass mc) { return mc.ToString(); } public override string ToString() { return _myNo.ToString(); } }
最后,我们对自定义的类型做以测试:
public static void Main(string[] args) { MyStruct MyNum; int i = 100; MyNum = (MyStruct)i; // 这里是显式转换 Console.WriteLine("整形显式转换为MyStruct型---"); Console.WriteLine(i); MyClass MyCls = new MyClass(200); string str = MyCls; // 这里是隐式转换 Console.WriteLine("MyClass型隐式转换为string型---"); Console.WriteLine(str); }
应用场景:
比如,在结构类型 System.Nullable<T> 中定义了
public struct Nullable<T> where T : struct { public static implicit operator T?(T value); public static explicit operator T(T? value); }
那么我们就可以,比如:
int num = 10; int? newNum = num; // 这里是 隐式类型转换 int age = (int)newNum; // 这里是 显示类型转换
谢谢浏览!
作者:音乐让我说(音乐让我说 - 博客园)
出处:http://music.cnblogs.com/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。