• 类型转换和操作符重载 (c#)


    http://www.cnblogs.com/chenxizhang/archive/2008/09/14/1290735.html

    也许你从来没有考虑过类型转换和操作符重载的问题,毕竟在很多时候,我们都是系统标准类型,使用内置的一些转换函数和操作符。

    但是假设你经常性地需要创建自定义类型(或者结构体),同时你想为它们都实现更加丰富的效果,那么了解.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即可使用   (执行这句时,调用static public implicit operator MyStruct(string s)方法)
                 Console.Write(m);
                Console.Read();
            }
        }
  • 相关阅读:
    Linux 之 编译器 gcc/g++参数详解
    linux下history命令显示历史指令记录的使用方法
    Linux 命令之 Navicat 连接 Linux 下的Mysql数据库
    Linux命令
    CentOS 下安装
    CMD命令之 :修改windows的CMD窗口输出编码格式为UTF-8
    CTO、技术总监、首席架构师的区别
    PHP ServerPush (推送) 技术的探讨
    一个公司的管理层级结构
    Table of Contents
  • 原文地址:https://www.cnblogs.com/lanchong/p/2287375.html
Copyright © 2020-2023  润新知