Thông tin tài liệu:
Tham khảo tài liệu chuyển đổi qua lại giữa các trường số nguyên trong c#, công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Nội dung trích xuất từ tài liệu:
Chuyển đổi qua lại giữa các trường số nguyên trong C# Ngôn Ngữ Lập Trình C# }Sự chuyển đổi này được thực hiện một cách ngầm định bởi vì bất cứ số nguyên nào cũng cóthể được chuyển thành một phân số bằng cách thiết lập tử số bằng giá trị số nguyên và mẫu sốcó giá trị là 1. Việc thực hiện này có thể giao lại cho phương thức khởi dựng lấy một tham số.Toán tử chuyển đổi thứ hai được thực hiện một cách tường minh, chuyển từ một Fraction ramột số nguyên: public static explicit operator int( Fraction theFraction ) { return theFraction.numerator / theFraction.denominator; }Bởi vì trong ví dụ này sử dụng phép chia nguyên, phép chia này sẽ cắt bỏ phần phân chỉ lấyphần nguyên. Do vậy nếu phân số có giá trị là 16/15 thì kết quả số nguyên trả về là 1. Một sốcác phép chuyển đổi tốt hơn bằng cách sử dụng làm tròn số.Tiếp theo sau là toán tử so sánh bằng (==) và toán tử so sánh không bằng (!=). Chúng ta nênnhớ rằng khi thực thi toán tử so sánh bằng thì cũng phải thực thi toán tử so sánh không bằng.Chúng ta đã định nghĩa giá trị bằng nhau giữa hai Fraction khi tử số bằng tử số và mẫu sốbằng mẫu số. Vi dụ, như hai phân số 3/4 và 6/8 thì không được so sánh là bằng nhau. Mộtlần nữa, một sự thực thi tốt hơn là tối giản tử số và mẫu số khi đó 6/8 sẽ đơn giản thành 3/4và khi đó so sánh hai phân số sẽ bằng nhau.Trong lớp này chúng ta cũng thực thi phủ quyết phương thức Equals() của lớp object, do đóđối tượng Fraction của chúng ta có thể được đối xử một cách đa hình với bất cứ đối tượngkhác. Trong phần thực thi của phương thức chúng ta ủy thác việc so sánh lại cho toán tử sosánh bằng cách gọi toán tử (==).Lớp Fraction có thể thực thi hết tất cả các toán tử số học như cộng, trừ, nhân, chia. Tuy nhiên,trong phạm vi nhỏ hẹp của minh họa chúng ta chỉ thực thi toán tử cộng, và thậm chí phépcộng ở đây được thực hiện đơn giản nhất. Chúng ta thử nhìn lại, nếu hai mẫu số bằng nhau thìta cộng tử số: public static Fraction operator + ( Fraction lhs, Fraction rhs) { if ( lhs.denominator == rhs.denominator) { return new Fraction( lhs.numerator + rhs.numerator, lhs.denominator); } }Nếu mẫu số không cùng nhau, thì chúng ta thực hiện nhân chéo: int firstProduct = lhs.numerator * rhs.denominator; int secondProduct = rhs.numerator * lhs.denominator; return new Fraction( firstProduct + secondProduct, lhs.denominator * 161 Nạp Chồng Toán Tử Ngôn Ngữ Lập Trình C# rhs.denominator);Cuối cùng là sự phủ quyết phương thức ToString() của lớp object, phương thức mới này thựchiện viết xuất ra nội dung của phân số dưới dạng : tử số / mẫu số: public override string ToString() { string s = numerator.ToString() + “/” + denominator.ToString(); return s; }Chúng ta tạo một chuỗi mới bằng cách gọi phương thức ToString() của numerator. Donumerator là một đối tượng, nên trình biên dịch sẽ ngầm định thực hiện boxing số nguyênnumerator và sau đó gọi phương thức ToString(), trả về một chuỗi thể hiện giá trị của sốnguyên numerator. Sau đó ta nối chuỗi với “/” và cuối cùng là chuỗi thể hiện giá trị của mẫusố.Với lớp Fraction đã tạo ra, chúng ta thực hiện kiểm tra lớp này. Đầu tiên chúng ta tạo ra haiphân số 3/4, và 2/4: Fraction f1 = new Fraction( 3, 4); Console.WriteLine(f1:{0},f1.ToString()); Fraction f2 = new Fraction( 2, 4); Console.WriteLine(f2:{0},f2.ToString());Kết quả thực hiện các lệnh trên như sau: In Fraction Constructor(int, int) f1: 3/4 In Fraction Constructor(int, int) f2: 2/4Do trong phương phức khởi dựng của lớp Fraction chúng ta có gọi hàm WriteLine() để xuấtra thông tin bộ khởi dựng nên khi tạo đối tượng (new) thì cũng các thông tin này sẽ được hịểnthị.Dòng tiếp theo trong hàm Main() sẽ gọi toán tử cộng, đây là phương thức tĩnh. Mục đích củatoán tử này là cộng hai phân số và trả về một phân số mới là tổng của hai phân số đưa vào: Fraction f3 = f1 + f2; Console.WriteLine(“f1 + f2 = f3: {0}”, f3.ToString());Hai câu lệnh trên sẽ cho ra kết quả như sau:In operator +In Fraction Constructor( int, int)f1 + f2 = f3: 5/4Toán tử + được gọi trước sau đó đến phương thức khởi dựng của đối tượng f3. Phương thứckhởi dựng này lấy hai tham số nguyên để tạo tử số và mẫu số của phân số mới f3. 162 Nạp Chồng Toán Tử Ngôn Ngữ Lập Trình C#Hai câu lệnh tiếp theo cộng một giá trị nguyên vào phân số f3 và gán kết quả mới về cho phânsố mới f4: Fraction f4 = f3 + 5; Console.WriteLine(“f3 + 5 = f4: {0}”, f4.ToString());Kết quả được trình bày theo thứ tự sau: In implicit conversion to Fractio ...