该篇文章是我于2009年6月10日通过自己编写的工具,批量从位于在博客园的博客站点(http://chenxizhang.cnblogs.com)同步而来。文章中的图片地址仍然是链接到博客园的。特此说明! 陈希章原文地址:http://www.cnblogs.com/chenxizhang/archive/2008/09/14/1290735.html原文标题:类型转换和操作符重载 (c#) 原文发表:2008/9/14 2:33:00 |
也许你从来没有考虑过类型转换和操作符重载的问题,毕竟在很多时候,我们都是系统标准类型,使用内置的一些转换函数和操作符。
但是假设你经常性地需要创建自定义类型(或者结构体),同时你想为它们都实现更加丰富的效果,那么了解.NET所支持的类型转换和操作符重载就显得有些必要了
下面看看一个结构体的定义
public struct MyStruct
{
public string Name;
///
/// 这是一个操作符重载,但他的作用是做类型转换,而且是隐式类型转换(implicit)
/// 这个操作符的具体意义就是可以把字符串转换为一个对象
///
///
///
static public implicit operator MyStruct(string s) {
return MyStruct.Parse(s);
}
///
/// 手工地编写一个处理器(Parse)函数,表示从其他格式转换为对象
///
///
///
static public MyStruct Parse(string s)
{
MyStruct m = new MyStruct();
m.Name = s;
return m;
}
///
/// 重写该方法的目的是可以用一个字符串来表示一个对象
///
///
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();
}
}
作者:陈希章 出处:http://blog.youkuaiyun.com/chen_xizhang 本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |