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

本文通过一个简单的示例介绍了C#中类型转换的方法,包括显式转换和隐式转换,并展示了如何在自定义类中实现运算符重载来方便地比较对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值