科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件针对 Java 开发人员的 C# 编程语言(21)

针对 Java 开发人员的 C# 编程语言(21)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

针对 Java 开发人员的 C# 编程语言运算符重载

来源:MSDN 2007年11月7日

关键字: 编程语言 C# java Linux

  • 评论
  • 分享微博
  • 分享邮件

运算符重载

与 C++ 一样,C# 允许我们重载运算符,以供在我们自己的类中使用。这可能使得用户定义的数据类型看起来很自然,并且可以在逻辑上作为基本数据类型使用。例如,我们可以创建一个新的名为 Complex 的数据类型来表示一个复杂的数字,并且提供一些方法,以使用标准的算术运算符对这样的数字进行算术运算,例如使用 + 运算符来使两个复杂的数字相加。

为了重载一个运算符,我们编写了一个函数,它将需要重载的运算符的符号放在名称 operator 的后面。例如,我们可以这样来重载 + 运算符:

public static complex operator+(complex lhs, complex rhs)

所有的运算符重载都是类的静态方法。同时也需要注意,如果您重载等于运算符 (==),您还必须重载不等于运算符 (!=)。

可以重载的运算符的完整列表如下:

  • 一元运算符: +, -, !, ~, ++, --, true, false

  • 二元运算符: +, -, *, /, %, &, |, ^, <<, >>, ==, !=, >, <, >=, <=

下一个示例创建了一个 Complex 类,该类重载 + 和 - 运算符:

using System;
public class complex
{
  private float real;
  private float img;

  public complex(float p, float q)
  {
    real = p;
    img = q;
  }

  public complex()
  {
    real = 0;
    img = 0;
  }

  public void Print()
  {
    Console.WriteLine("{0} + {1}i", real, img);
  }

  // Overloading '+' operator
  public static complex operator+(complex lhs, complex rhs)
  {
    complex sum = new complex();
    sum.real = lhs.real + rhs.real;
    sum.img = lhs.img + rhs.img;
    return (sum);
  }

  // Overloading '-' operator
  public static complex operator-(complex lhs, complex rhs)
  {
    complex result = new complex();
    result.real = lhs.real - rhs.real;
    result.img = lhs.img - rhs.img;
      return (result);
  }
}
此类允许我们使用代码来创建和操作两个复杂的数字,如下所示:
using System;

public class ComplexClass
{
  public static void Main(string[] args)
  {
    // Set up complex numbers
    complex A = new complex(10.5f,12.5f);
    complex B = new complex(8.0f,4.5f);
    complex C;

    // Print object A and B
    Console.Write("Complex Number A: ");
    A.Print();
    Console.Write("Complex Number B: ");
    B.Print();

    // Add A and B, print result
    C = A + B;
    Console.Write("\nA + B = ");
    C.Print();

    // Subtract A and B, print result
    C = A - B;
    Console.Write("A - B = ");
    C.Print();
  }
}

正如程序所演示的,我们现在可以很直观地对属于复杂类的对象使用加减运算符。下面是我们得到的输出:

Complex Number A: 10.5 + 12.5i
Complex Number B: 8 + 4.5i

A + B = 18.5 + 17i
A - B = 2.5 + 8i

虽然 Java 在内部为字符串连接重载了 + 运算符,但是它并不支持运算符重载。

查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章