{site_name}

{site_name}

🌜 搜索

C#运算符重载是指将C#中的标准运算符(如+、-、*、/等)赋予自定义类型的能力

编程 𝄐 0
c#运算符的重载,c#赋值运算符重载,c# 重载运算符 引用参数,c# ~运算符,简述在c#中常用的运算符及其功能,c#?运算符
C#运算符重载是指将C#中的标准运算符(如+、-、*、/等)赋予自定义类型的能力,以便使得操作这些类型的对象时可以像操作内置类型一样进行运算。通过运算符重载,我们可以对自定义类型的对象使用像内置类型那样的算术、比较、逻辑等运算符。

下面是一个简单的实现:假设我们有一个自定义的分数类Fraction,它包括分子和分母两个属性,我们想要实现分数的加减乘除四则运算。我们可以通过运算符重载来实现这些运算符:

csharp
class Fraction {
public int Numerator { get; set; }
public int Denominator { get; set; }

public static Fraction operator +(Fraction a, Fraction b) {
return new Fraction {
Numerator = a.Numerator * b.Denominator + b.Numerator * a.Denominator,
Denominator = a.Denominator * b.Denominator
};
}

public static Fraction operator -(Fraction a, Fraction b) {
return new Fraction {
Numerator = a.Numerator * b.Denominator - b.Numerator * a.Denominator,
Denominator = a.Denominator * b.Denominator
};
}

public static Fraction operator *(Fraction a, Fraction b) {
return new Fraction {
Numerator = a.Numerator * b.Numerator,
Denominator = a.Denominator * b.Denominator
};
}

public static Fraction operator /(Fraction a, Fraction b) {
return new Fraction {
Numerator = a.Numerator * b.Denominator,
Denominator = a.Denominator * b.Numerator
};
}

public override string ToString() {
return $"{Numerator}/{Denominator}";
}
}


在上面的示例中,我们通过重载"+"、"-"、"*"和"/"运算符,使得Fraction类型的对象能够进行加、减、乘和除运算。对于每个运算符,我们定义了一个静态方法,并指定了该方法的操作数和返回值类型。这些方法中使用了标准的分数运算规则来计算结果,并返回一个新的Fraction对象。

现在我们可以使用自定义的Fraction类型进行加减乘除运算:

csharp
Fraction f1 = new Fraction { Numerator = 1, Denominator = 2 };
Fraction f2 = new Fraction { Numerator = 3, Denominator = 4 };

Fraction result1 = f1 + f2;
Console.WriteLine(result1); // 输出:5/4

Fraction result2 = f1 - f2;
Console.WriteLine(result2); // 输出:-1/4

Fraction result3 = f1 * f2;
Console.WriteLine(result3); // 输出:3/8

Fraction result4 = f1 / f2;
Console.WriteLine(result4); // 输出:2/3