自定义数据类型,操作符重载实例[C#]

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

自定义数据类型,操作符重载实例。

以下创建一个基本的货币类型Currency,USD类为Currency的子类,并进行操作符重载,可以与特别类型进行基本的加减乘除操作。

   /// <summary>
    /// 货币类型基类
    /// </summary>
    public class Currency
    {
        //货币实际数值
        public decimal price { get; set; }
        public Currency(decimal value)
        {
            price = value;
        }
        //重载ToString方法
        public override string ToString()
        {
            return price.ToString();
        }
    }
    public class USD : Currency
    {
        //继承基类构造函数
        public USD(decimal value) : base(value) { }
        /// <summary>
        /// 此方法重载=号,可以直接使用=号赋值
        /// </summary>
        /// <param name="value"></param>
        /// <returns>返回USD货币类型</returns>
        public static implicit operator USD(decimal value)
        {
            return new USD(value);
        }
        /// <summary>
        /// 重载+号,同货币可以相加
        /// </summary>
        /// <param name="usd"></param>
        /// <param name="other"></param>
        /// <returns>返回USD货币类型</returns>
        public static USD operator +(USD usd, USD other)
        {
            return new USD(usd.price + other.price);
        }
        /// <summary>
        /// 重载-号,同货币可以相减
        /// </summary>
        /// <param name="usd"></param>
        /// <param name="other"></param>
        /// <returns>返回USD货币类型</returns>
        public static USD operator -(USD usd, USD other)
        {
            return new USD(usd.price - other.price);
        }
        /// <summary>
        /// 重载*号,可以同decimal类型相乘
        /// </summary>
        /// <param name="usd"></param>
        /// <param name="other"></param>
        /// <returns>返回USD货币类型</returns>
        public static USD operator *(USD usd,decimal other)
        {
            return new USD(usd.price * other);
        }
        /// <summary>
        /// 重载/号,可以同decimal类型相除
        /// </summary>
        /// <param name="usd"></param>
        /// <param name="other"></param>
        /// <returns>返回USD货币类型</returns>
        public static USD operator /(USD usd, decimal other)
        {
            return new USD(usd.price * other);
        }
    }

更多WEB开发技术请加群:Asp.Net高级群 号码:261882616  博主以及同事和你共同探讨感兴趣的话题。



掌握C# +=操作符重载的技巧和实践 C#编程语言中,操作符重载是一种高级特性,允许开发者为自己的数据类型定义或改变操作符的行为。通过这种机制,程序员可以创建出更加直观和易用的类。特别地,+=操作符通常用于将值添加到集合中,但也可以通过重载来实现自定义的功能。在C#中,+=操作符用于添加两个数值或对集合进行合并。在自定义类中实现+=操作符可以为类提供类似集合的添加功能,但是实现这个功能需要遵循特定的规则和步骤。接下来将详细介绍如何在自定义类中实现+=操作符。首先需要定义一个方法来重载+=操作符 阅读详情

相关推荐

C++操作符重载实战教程与代码案例

自定义容器类中,实现迭代器是常见的需求。这时,操作符重载同样重要。用户自定义迭代器需要重载解引用操作符和指针访问操作符->,以便和STL算法无缝协作。这些操作符重载需要符合迭代器协议,比如支持指针算术运算和迭代器失效原则。public:private:通过以上章节内容的介绍和示例代码展示,我们了解了操作符重载在类设计和复杂数据结构实现中的应用。在实际开发过程中,根据具体需求合理设计操作符重载,能够使代码更加简洁、易懂且高效。

weixin_30951515的博客 926

为创建的一个自定义数据类型进行运算符重载

在前面一篇文章里谈到编程语言里面只有Int,float,double等基本数据类型,而没有有理数类型,因此我们自定义了一个Rational类型(见http://blog.csdn.net/yanerhao/article/details/45009283),表示有理数,含有四则运算,比较,输出结果等成员函数,但是与常见的基本类型相比,还是显得特殊,显得格格不入。需要进一步基本化,这就是需要运算符重

yanerhao的专栏 2388

C++学习笔记-operator关键字:重载自定义操作符

操作符重载是C++语言的一个特性,它允许你重新定义或“重载”已存在的操作符(如+、-、*、/等)在特定类型上的行为。这意呀着,你可以为自定义类型(如类)定义这些操作符如何工作,使得它们能够像内置类型那样进行算术运算或逻辑操作。

chen_mp的博客 2063

【WCF】契约

什么是契约? 从SOA概念上将,契约数据服务公开接口的一部分。一个服务契约,定义了服务端公开的服务方法,使用传输协议,可访问地址,传输的消息格式等内容。 就是:乌龟的屁股(规定),没有规矩不成方圆,你总要规定一下你的数据传输格式,以及怎么传输的。但是规定不需要我们写,我们需要知道的就是:我们在什么时候用什么规定就好了。   契约的分类 1.服务契约 它主要定义是:你要提供的一些操作,在...

凉快 469

C# 自定义重载运算符

强制转换运算符 public class Bool { public bool value; public static explicit operator bool(Bool v) { return v.value; } } Bool a; bool b = (Bool)a; 比较运算符 注意使用哈希相关的容器时需要重写HashCode public class GameTime { public int Day, Hour, Minute;

QAQ 1319

WCF数据契约与序列化(转)

【0】数据契约(DataContract):     在WCF服务编程中我们知道,服务契约定义了远程访问对象和可供调用的服务操作方法,数据契约则是定义服务端和客户端之间要传送的自定义数据类型。在 WCF项目中,声明一个类型为DataContract,那么该类型就可以被序列化在服务端和客户端之间传送。类只有声明为DataContract,该 类型的对象才可以被传送,且只有类的属性会被传送,需要在属...

weixin_34032827的博客 188

C# 操作符重载对象详解

操作符重载C# 中一项强大的特性,它为自定义类型的操作提供了更多的灵活性和可读性。通过合理地重载操作符,我们可以让自定义类型像基本数据类型一样,方便地使用各种操作符进行运算和比较等操作。在使用操作符重载时,需要严格遵循相关的规则和注意事项,以确保代码的正确性和可维护性。随着对 C# 编程的深入学习,我们可以在更多的场景中应用操作符重载,提升代码的质量和开发效率。

zsnandzmn的博客 1334

c#学习笔记--静态方法和实例方法、方法的重载操作符重载

C#静态方法和实例方法、方法的重载操作符重载

chensi16114的博客 1918

C#运算符重载(操作符重载)

1.什么是操作符重载 定义:(百科定义)就是把已经定义的、有一定功能的操作符进行重新定义,来完成更为细致具体的运算等功能。操作符重载可以将概括性的抽象操作符具体化,便于外部调用而无需知晓内部具体运算过程。 2.为什么需要运算符重载? 在C#中 ,内置的数据类型有:int、double等这些类型是可以直接进行数值加减运算。例如:int i, j = 1; int sum=i+j;可以直接...

weixin_30266829的博客 676

C# 中那些可以被重载操作符,以及使用它们的那些丧心病狂的语法糖

C# 中的操作符重载并不新鲜。然而,到底有哪些操作符可以重载重载操作符可以用来做哪些丧心病狂的事情呢? 本文收集了 C# 中所有可以重载操作符,并且利用他们做了一些丧心病狂的语法糖。 可以重载操作符 操作符重载比想象中的更加强大。因为——重载操作符时可以随意定义操作符中操作数的数据类型和返回值的类型。 是的!不只是操作数,连返回值类型也能被重载! 一元操作符 +...

walterlv - 吕毅 1199

C#语言系列讲座(8) 索引器与操作符重载

索引器 索引器(Indexer)是C#引入的一个新的类成员,它使得对象可以像数组那样被方便、直观地引用。索引器非常类似于前面讲到的属性,不同的是索引器可以有参数列表,但只能作用在实例对象上,而不能直接作用在类上。 索引器没有像属性和方法那样的名字,关键字this清楚地表达了索引器引用对象的特征。和属性一样,value关键字在set后的语句块里有参数传递的意义。实际上从编译后的IL中间语言代码来看,

Ninth(天下第九)的专栏 1336

Kotlin 操作符重载其实很简单

前言 之前虽然了解操作符,但是一直对操作符重载有点懵,今天重新梳理了一下,其实很简单 什么是操作符 这个问题官网和Kotlin中文都有,博客也很多,可以先看下: Kotlin中文网:https://www.kotlincn.net/docs/reference/operator-overloading.html 做一点补充: 其实操作符就是Kotlin内置了一堆符号与操作的映射,举个例子就...

Android 一亩良田 731

C#中的方法重载

一、方法的重载 重载的含义: 就是在同一个作用域内,可以声明几个功能类似的同名函数。调用时根据不同的实参列表选择相应的函数。 重载的特点: 函数名相同,参数列表不同。 参数列表不同主要表现在参数个数的数据类型不同。在调用重载的方法时系统是根据所传递参数的不同判断用的是那个方法。 方法的几个版本有不同的签名(即 ,方法名相同,但参数的个数和/或类 型不同)。 为了重载方法,只 需声明同名但参数个数或类型不同的方法即可: clas...

m0_46408680的博客 6974

C#操作符重载

每种语言都会提供一定量的操作符C#也不例外。 我们知道,C#提供的这些操作符只能用于系统预定义的数据类型。 其实,我们通过操作符重载可以使这些操作符作用于我们自己定义的类或者结构。 下面将以一个向量结构体作为实例来演示操作符重载的使用方法。 首先给出代码,如下: struct Vector { public float x,y; //重写ToString(),用于查看

三五月儿的专栏 3272

C#关于操作符重载

1、操作符重载: 一元操作法重载:一个参数 二元操作符重载:两个参数 用户定义的数据类型转换:为了满足需求把一种类型转化为另一种类型 2、操作符的开始必须以public  static修饰 对双目运算的操作符必须同时重载,不能只重载一个: true false、== !=、、>=|编译错误。 3、如果重新了Equal就要超重写GetHashCode,只写其中的一个将会发生警告信息。

红鹰 732

C#中如何利用操作符重载

多态性是OOP(面向对象编程)的基本原则之一。多态性(Polymorphism)来源于两个词——“poly”意为很多,“morph”意为形式。因此,多态性意味着同样的事情以不同的形式存在。操作符重载是静态多态性的一个示例。可以利用操作符重载或增加操作符功能,使用基本数据类型相同的用户定义类型方法进行操作。什么是操作符?什么是能被重载操作符?表达式中通常有操作符和操作数。操作符对操作数起作用并且是...

一起来捉 Bug 呀~~ 1443
上一篇: Fibnaci数列迭代法(非递归)
下一篇: MVC验证
chamychen
博客等级 码龄17年 22粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值