推荐给初学者,如何在 C# 中自定义类型转换

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;   // 这里是 显示类型转换

谢谢浏览!

转载于:https://www.cnblogs.com/Music/archive/2011/07/12/about-custom-type-converter-in-csharp.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值