[問題] 請教各位先進一個使用者自定轉換的問題

看板C_Sharp (C#)作者 (嗨...)時間20年前 (2005/12/25 01:19), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
各位先進大家好 在這請教一個使用者自定轉換的問題 以下是我的小程式 using System; class Fraction { private int denominator; private int numerator; public Fraction(int numerator, int denominator) { Console.WriteLine("Constructor a fractioin"); this.denominator = denominator; this.numerator = numerator; } public Fraction(int wholenumber) { Console.WriteLine("In integer constructor"); numerator = wholenumber; denominator = 1; } public static implicit operator Fraction(int theInt) { Console.WriteLine("Implicit changes to Fraction"); return new Fraction(theInt); } public static explicit operator int(Fraction theFraction) { Console.WriteLine("Explicit changes 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; } else 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 Equals()"); if(!(o is Fraction)) { return false; } else 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); } else { return new Fraction(lhs.numerator * rhs.denominator + rhs.numerator * lhs.denominator, lhs.denominator * rhs.denominator); } } public override string ToString() { Console.WriteLine("In ToString()"); string s = numerator.ToString() + "/" + denominator.ToString(); return s; } } class MainClass { public static void Main() { int result = 0; 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("f3:{0}", f3.ToString()); Fraction f4 = f3 + 5; Console.WriteLine("f4:{0}", f4.ToString()); result = f2;//這裡會出現編譯錯誤 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Console.WriteLine("result = {0}", result); } } 在result = f2這裡會出現編譯錯誤的狀況 然而我在上段的程式碼裡面也已經定義了 explicit 的轉換規則 卻又出現了編譯錯誤的狀況 因此想請教各位先進我是哪裡出錯了呢 望請各位不吝指教 謝謝嚕~~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.136.235.181
文章代碼(AID): #13hOClII (C_Sharp)
文章代碼(AID): #13hOClII (C_Sharp)