C#自定义数据类型的元算符重载与类型转换

using System;

using System.Collections;

 

namespace MyPractise.CastType

{

    class Program

    {

        static void Main(string [] args)

        {

            string str = (string )new Person ("John" );

            Console .WriteLine(str);//Output John

            Person person = str;

            Console .WriteLine(person.Name);//Output John

            Person person2 = new Person ("Jone" );

            Console .WriteLine(person == person2);//Output false

            person2 = (Person )str;

            Console .WriteLine(person == person2);//Output true

            Console .WriteLine(Type .ReferenceEquals(person,person2));//Output false

            Console .ReadKey();

        }

    }

    class Person

    {

        public string Name { get ; set ; }

        public Person(string name)

        {

            Name = name;

        }

        /// <summary>

        /// Overload ==

        /// </summary>

        /// <param name="left"></param>

        /// <param name="right"></param>

        /// <returns></returns>

        public static bool operator == (Person left,Person right)

        {

            return left.Name==right.Name;

        }

        /// <summary>

        /// Overload !=

        /// </summary>

        /// <param name="left"></param>

        /// <param name="right"></param>

        /// <returns></returns>

        public static bool operator !=(Person left, Person right)

        {

            return left.Name != right.Name;

        }

        /// <summary>

        /// Override Equals

        /// </summary>

        /// <param name="obj"></param>

        /// <returns></returns>

        public override bool Equals(object obj)

        {

            Person equalInstancePerson = (Person )obj;

            return this == equalInstancePerson;

        }

        /// <summary>

        /// Override GetHashCode

        /// </summary>

        /// <returns></returns>

        public override int GetHashCode()

        {

            return base .GetHashCode();

        }

        /// <summary>

        /// Overload Person->string

        /// </summary>

        /// <param name="person"></param>

        /// <returns></returns>

        public static explicit operator string (Person person)

        {

            return person.Name;

        }

        /// <summary>

        /// Overload string->Person

        /// </summary>

        /// <param name="str"></param>

        /// <returns></returns>

        public static implicit operator Person (string str)

        {

            return new Person (str);

        }

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值