⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex-06-01

📁 Programming Csharp Source Code(代码) Programming Csharp Source Code
💻
字号:
//Example 06-01: Defining conversions and operators for the fraction class operators

using System;

public class Fraction
{
   public Fraction(int numerator, int denominator)
   {
      Console.WriteLine("In Fraction Constructor(int, int)");
      this.numerator=numerator;
      this.denominator=denominator;
   }

   public Fraction(int wholeNumber)
   {
      Console.WriteLine("In Fraction Constructor(int)");
      numerator = wholeNumber;
      denominator = 1;
   }

   public static implicit operator Fraction(int theInt)
   {
      System.Console.WriteLine("In implicit conversion to Fraction");
      return new Fraction(theInt);
   }

   public static explicit operator int(Fraction theFraction)
   {
      System.Console.WriteLine("In explicit conversion to int");
      return theFraction.numerator / 
         theFraction.denominator;
   }

   public static bool operator==(Fraction lhs, Fraction rhs)
   {
      Console.WriteLine("In operator ==");
      if (lhs.denominator == rhs.denominator && 
         lhs.numerator == rhs.numerator)
      {
         return true;
      }
      // code here to handle unlike fractions
      return false;
   }

   public static bool operator !=(Fraction lhs, Fraction rhs)
   {
      Console.WriteLine("In operator !=");
        
      return !(lhs==rhs);
   }

   public override bool Equals(object o)
   {
      Console.WriteLine("In method Equals");
      if (! (o is Fraction) )
      {
         return false;
      }
      return this == (Fraction) o;
   }

   public static Fraction operator+(Fraction lhs, Fraction rhs)
   {
      Console.WriteLine("In operator+");
      if (lhs.denominator == rhs.denominator)
      {
         return new Fraction(lhs.numerator+rhs.numerator,
            lhs.denominator);
      }

      // simplistic solution for unlike fractions            
      // 1/2 + 3/4 == (1*4) + (3*2) / (2*4) == 10/8
      int firstProduct = lhs.numerator * rhs.denominator;
      int secondProduct = rhs.numerator * lhs.denominator;
      return new Fraction(
         firstProduct + secondProduct,       
         lhs.denominator * rhs.denominator
         );

   }

   public override string ToString()
   {
      String s = numerator.ToString() + "/" +
         denominator.ToString();
      return s;
   }

   private int numerator;
   private int denominator;
}


public class Tester
{
   static void Main()
   {
      Fraction f1 = new Fraction(3,4);
      Console.WriteLine("f1: {0}", f1.ToString());

      Fraction f2 = new Fraction(2,4);
      Console.WriteLine("f2: {0}", f2.ToString());
        
      Fraction f3 = f1 + f2;
      Console.WriteLine("f1 + f2 = f3: {0}", f3.ToString());

      Fraction f4 = f3 + 5;
      Console.WriteLine("f3 + 5 = f4: {0}", f4.ToString());

      Fraction f5 = new Fraction(2,4);
      if (f5 == f2)
      {
         Console.WriteLine("F5: {0} == F2: {1}", 
            f5.ToString(), 
            f2.ToString());
      }

   }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -