美文网首页
40.C# 运算符重载

40.C# 运算符重载

作者: 技术老小子 | 来源:发表于2024-03-11 05:29 被阅读0次

摘要


C#是一种面向对象的编程语言,其中包含了用户自定义类型的支持。在C#中,可以使用用户自定义类型的运算符,也就是重载运算符。

重载运算符是具有特殊名称的函数,是通过关键字 operator 后跟运算符的符号来定义的。这些重载运算符可以用来对用户自定义类型的对象进行算术、比较、逻辑和位运算等操作。

通过重载运算符,您可以使用用户自定义类型的对象进行各种操作,这对于构建复杂的程序和应用程序非常有用。重载运算符可以大大提高代码的可读性和可维护性,使程序更加灵活和可扩展。

正文


运算符 描述
+, -, !, ~, ++, -- 这些一元运算符只有一个操作数,且可以被重载。
+, -, *, /, % 这些二元运算符带有两个操作数,且可以被重载。
==, !=, <, >, <=, >= 这些比较运算符可以被重载。
&&,
+=, -=, *=, /=, %= 这些赋值运算符不能被重载。
=, ., ?:, ->, new, is, sizeof, typeof 这些运算符不能被重载。

创建一个Box类

internal class Box
{
    public int Length { get; set; }
    public int Width { get; set; }
    public int Height { get; set; }

    public int Volume()
    {
        return Length * Width * Height;
    }

    //两个箱子相加
    public static Box operator +(Box a, Box b)
    {
        Box box = new Box();
        box.Length = a.Length + b.Length;
        box.Width = a.Width + b.Width;
        box.Height = a.Height + b.Height;
        return box;
    }

    //两个箱子是否相同
    public static bool operator ==(Box a, Box b)
    {
        if(a.Length==b.Length && a.Width==b.Width && a.Height == b.Height)
        {
            return true;
        }
        return false;
    }

    //两个箱子是否不相同
    public static bool operator !=(Box a, Box b)
    {
        if (a.Length == b.Length && a.Width == b.Width && a.Height == b.Height)
        {
            return false;
        }
        return true;
    }

    public void PrintSize()
    {
        Console.WriteLine(this.Length * this.Width * this.Height);
    }
}

static void Main(string[] args)
{
    Box box1 = new Box();
    Box box2 = new Box();

    box1.Length = 100;
    box1.Width = 50;
    box1.Height = 50;

    box2.Length = 30;
    box2.Width = 10;
    box2.Height = 10;

    Box box3 = box1 + box2;
    box3.PrintSize();

    bool isSame=box1==box2;
    Console.WriteLine(isSame);
}

相关文章

  • 运算符重载及其他约定

    7.1 重载算术运算符 重载二元算术运算符 重载复合赋值运算符 重载一元运算符 重载比较运算符 等号运算符:‘eq...

  • C++ 部分运算符重载

    可重载的运算符 不可重载的运算符和符号 重载运算符为类的成员函数 重载运算符为友元函数 重载赋值运算符 重载流插入...

  • 2019-07-11 运算符的重载

    运算符的重载 重载运算符 (“::”,“.*”,“.”,“?:”)不能被重载。 重载运算符时,不能改变其本质,如不...

  • 运算符重载

    一.+号运算符重载 二.<<号运算符重载 三.指针运算符重载(智能指针)

  • C++运算符重载-下篇 (Boolan)

    C++运算符重载-下篇 (Boolan) 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符...

  • C++运算符重载-上篇 (Boolan)

    C++运算符重载-上篇 (Boolan) 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符...

  • C++重载

    重载 C++语言规定: 重载的运算符要保持原运算符的意义。只能对已有的运算符重载,不能增加新的运算符。重载的运算符...

  • C++运算符重载详解

    运算符重载规则 1.被重载的运算符必须是已经存在的C++运算符,不能重载自己创建的运算符; 2.运算符被重载之后,...

  • 第十一章 使用类

    运算符重载 运算符重载是一种形式的C++多态。运算符重载将重载的概念扩展到运算符上,允许赋予C++运算符多种含义。...

  • 4.0 C++远征:重载运算符

    重载运算符 [TOC] 四、重载运算符 ​ 概念 : 给原有运算符赋予新功能。 ​ 本质 : 函数重载。 ...

网友评论

      本文标题:40.C# 运算符重载

      本文链接:https://www.haomeiwen.com/subject/cdcmzdtx.html