类型转换和操作符重载 (c#)
也许你从来没有考虑过类型转换和操作符重载的问题,毕竟在很多时候,我们都是系统标准类型,使用内置的一些转换函数和操作符。
但是假设你经常性地需要创建自定义类型(或者结构体),同时你想为它们都实现更加丰富的效果,那么了解.NET所支持的类型转换和操作符重载就显得有些必要了
下面看看一个结构体的定义
public struct MyStruct { public string Name; /// <summary> /// 这是一个操作符重载,但他的作用是做类型转换,而且是隐式类型转换(implicit) /// 这个操作符的具体意义就是可以把字符串转换为一个对象 /// </summary> /// <param name="s"></param> /// <returns></returns> static public implicit operator MyStruct(string s) { return MyStruct.Parse(s); } /// <summary> /// 手工地编写一个处理器(Parse)函数,表示从其他格式转换为对象 /// </summary> /// <param name="s"></param> /// <returns></returns> static public MyStruct Parse(string s) { MyStruct m = new MyStruct(); m.Name = s; return m; } /// <summary> /// 重写该方法的目的是可以用一个字符串来表示一个对象 /// </summary> /// <returns></returns> public override string ToString() { return string.Format("Name:{0}", Name); } }
下面看看如何在程序中使用
class Program { static void Main(string[] args) { MyStruct m = "Test";//结构体可以不需要new即可使用 Console.Write(m); Console.Read(); } }