`
javatome
  • 浏览: 824845 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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

}

}

}

分享到:
评论

相关推荐

    C#语言参考C#语言参考

    6.4.4 用户自定义显式类型转换 89 7. 表达式 91 7.1 表达式分类 91 7.1.1 表达式的数值 92 7.2 操作符 92 7.2.1 操作符优先级和结合顺序 92 7.2.2 操作符重载 93 7.2.3 一元操作符重载分析 94 7.2.4 二元操作符重载...

    微软 C#语言参考 CHM格式

    6.4.4 用户自定义显式类型转换... 89 7. 表达式... 91 7.1 表达式分类... 91 7.1.1 表达式的数值... 92 7.2 操作符... 92 7.2.1 操作符优先级和结合顺序... 92 7.2.2 操作符重载... 93 7.2.3 一元操作符重载分析... ...

    明日科技C#开发入门及项目实战

    实例060 使用重载方法实现不同类型数据的计算 实例061 使用属性存储用户编号和姓名 实例062 使用索引器 实例063 通过类继承计算梯形面积 实例064 封装类实现一个简单的计算器 实例065 通过结构计算矩形的面积 实例...

    C#语言参考,微软的基础教程

    6.4.4 用户自定义显式类型转换 79 7. 表达式 79 7.1 表达式分类 79 7.1.1 表达式的数值 79 7.2 操作符 79 7.2.1 操作符优先级和结合顺序 79 7.2.2 操作符重载 79 7.2.3 一元操作符重载分析 79 7.2.4 二元操作符重载...

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和...数据控件、自定义用户控件、文件基本操作、文件夹基本操作、文件流操作、加密、解密及解压缩文件、C#与Word互操作、高效应用Excel、基本图形...

    《C#经典编程220例》.(明日科技).【带书签】-共3部分

    实例060 使用重载方法实现不同类型数据的计算 97 实例061 使用属性存储用户编号和姓名 99 实例062 使用索引器 101 实例063 通过类继承计算梯形面积 103 实例064 封装类实现一个简单的计算器 106 实例065 通过结构...

Global site tag (gtag.js) - Google Analytics