Recent Posts

Code C#: Nạp chồng toán tử (operator) trong C#

-

//Ví dụ minh họa nạp chồng toán tử (operator) ==, !=, + , - trong C# sử dụng implicit và explicit
using System;
public class Fraction{
publicFraction(int numerator, int denominator){
     Console.WriteLine("In Fraction Constructor(int, int)");
     this.numerator=numerator;
     this.denominator=denominator;
}
publicFraction(int wholeNumber){
     Console.WriteLine("In Fraction Constructor(int)");
     numerator = wholeNumber;
     denominator = 1;
}
public static implicit operator Fraction(inttheInt){
     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");
     returntheFraction.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
     intfirstProduct = lhs.numerator * rhs.denominator;
     intsecondProduct = rhs.numerator * lhs.denominator;
     return new Fraction(
        firstProduct + secondProduct,
        lhs.denominator * rhs.denominator
        );
}
public override stringToString(){
     String s = numerator.ToString( ) + "/" +
        denominator.ToString( );
     return s;
}
private int numerator;
private int denominator;
}
public class Tester{
static void Main(){
     //implicit conversion to Fraction
     Fraction f1 = newFraction(3);
     Console.WriteLine("f1: {0}", f1.ToString( ));
     Fraction f2 = newFraction(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 = newFraction(2,4);
     if (f5 == f2){
        Console.WriteLine("F5: {0} == F2: {1}", f5.ToString(),
       f2.ToString());
     }
     int k = (int)f4; //explicit conversion to int
     Console.WriteLine("int: F5 = {0}", k.ToString());
}
}

Related Post:

  • Hive là gì?1. Tổng quan về HiveApache Hive là 1 kho dữ liệu (data warehouse) hỗ trợ người sử dụng có thể dễ dàng hơn trong việc quản lý và truy vấn đối với các tập dữ liệu lớn được lưu trữ trên các hệ thống lưu trữ phân tán (distributed storage). Hive được xây dựng dựa trên cơ sở của Apache Hadoop, nó cung cấp các tính năng chinh sau:Công cụ cho phép dễ dàng thực hiện tác v… Read More
  • HBase là gì?IntroductionHBase là 1 hệ cơ sở dữ liệu mã nguồn mở được xây dựng dựa trên BigTable được mô tả trong nghiên cứu: “BigTable: A Distributed Storage Systemystem for Structure Data”. HBase cung cấp khả năng lưu trữ dữ liệu lớn lên tới hàng tỷ dòng, hàng triệu cột khác nhau cũng như hàng petabytes dung lượng. HBase là 1 NoSQL điển hình bởi vậy các tables của HBase khô… Read More
  • Big Data, Data Mining và Machine Learning: Bên trong những điều ẩn giấuTrong vài năm nay “Big Data” (dữ liệu lớn) và “Data Mining” (Khai thác dữ liệu) đã trở thành những từ ngữ thường được dùng trong nền công nghiệp kĩ thuật. Nó giải thích được tại sao Facebook biết được nên quảng cáo điều gì với bạn, iPhones biết điều chỉnh cách đánh chữ của bạn và rõ ràng hơn nữa là NSA (National Security Agency) biết được bạn có phải một kẻ khủng bố h… Read More
  • Java Reflection truy xuất biến, hàm private Reflection là kĩ thuật rất cần thiết để lấy các thông tin của một kiểu dữ liệu. Dựa vào đó ta có thể kích hoạt (như các phương thức) hoặc tạo thể hiện của kiểu dữ liệu đó. Một ứng dụng quan trọng của reflection mà bạn có thể biết là Java Bean. Nhờ đó, các IDE (như NetBeans) có thể lấy được các thông tin và thiết lập giá trị cho các đối tượng.Kiến trúc của Java Reflect… Read More
  • NoSQL, MongoDB là gì?1. NoSQL1.1. Khái niệmNoSQL là một khái niệm chỉ về một lớp các hệ cơ sở dữ liệu không sử dụng mô hình quan hệ. (RDBMS). RDBMS vốn tồn tại khá nhiều nhược điểm như có hiệu năng không tốt nếu kết nối dữ liệu nhiều bảng lại hay khi dữ liệu trong một bảng là rất lớn.NoSQL ra đời năm 1998 bởi Carlo Strozzi khi ông lập mới một hệ cơ sở dữ liệu quan hệ mã nguồn mở nhanh và … Read More
  • Tống Quan Về SPRING IO PLATFORMLet's build a better Enterprise - Ảnh: InternetLet's build a better Enterprise - Đó là slogan quen thuộc của Spring Community trên toàn thế giới. Spring giúp các nhà phát triển phần mềm xây dựng ứng dụng một cách dễ dàng, linh hoạt, nhanh và mạnh dựa trên JVM và các ứng dụng.Được giới thiệu tại hội nghị SpringOne/2GX vừa qua, Spring IO là một tập hợp các pro… Read More




Klik untuk melihat kode: :) =( :s :D :-D ^:D ^o^ 7:( :Q :p T_T @@, :-a :W *fck* x@