33.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);}

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章