Share via

Facebook x.com LinkedIn Email

operator (C# Reference)

  • 2013年02月04日

Use the operator keyword to overload a built-in operator or to provide a user-defined conversion in a class or struct declaration.

Example

The following is a very simplified class for fractional numbers. It overloads the + and * operators to perform fractional addition and multiplication, and also provides a conversion operator that converts a Fraction type to a double type.

 class Fraction
 {
 int num, den;
 public Fraction(int num, int den)
 {
 this.num = num;
 this.den = den;
 }
 // overload operator +
 public static Fraction operator +(Fraction a, Fraction b)
 {
 return new Fraction(a.num * b.den + b.num * a.den,
 a.den * b.den);
 }
 // overload operator *
 public static Fraction operator *(Fraction a, Fraction b)
 {
 return new Fraction(a.num * b.num, a.den * b.den);
 }
 // user-defined conversion from Fraction to double
 public static implicit operator double(Fraction f)
 {
 return (double)f.num / f.den;
 }
 }
 class Test
 {
 static void Main()
 {
 Fraction a = new Fraction(1, 2);
 Fraction b = new Fraction(3, 7);
 Fraction c = new Fraction(2, 3);
 Console.WriteLine((double)(a * b + c));
 }
 }
 /*
 Output
 0.880952380952381
 */

C# Language Specification

For more information, see the C# Language Specification. The language specification is the definitive source for C# syntax and usage.

See Also

Tasks

How to: Implement User-Defined Conversions Between Structs (C# Programming Guide)

Reference

C# Keywords

implicit (C# Reference)

explicit (C# Reference)

Concepts

C# Programming Guide

Other Resources

C# Reference