C# - C Sharp: Lớp Object


Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên

Trong C#, nếu bạn không chỉ ra một lớp được thừa kế từ lớp khác thì trình biên dịch sẽ tự động hiểu rằng lớp của bạn thừa kế từ lớp Object. Đều này có nghĩa là ngoài những thuộc tính và phương thức mà bạn định nghĩa thì bạn có thể truy cập đến những phương thức protected và public của lớp Object. Và những phương thức này cũng có trong tất cả lớp mà bạn định nghĩa.

Một số phương thức được định nghĩa trong lớp Object là:

Phương thức

Bổ từ truy cập

Chức năng

string ToString()

public virtual

Trả về một chuỗi mô tả của đối tượng

int GetHashTable()

public virtual

Được sử dụng nếu thi hành từ điển

bool Equals(object obj)

public virtual

So sánh các thực thể của đối tượng

bool Equals(object objA, object objB)

public static

So sánh các thực thể của đối tượng

bool ReferenceEquals(object objA, object objB)

public static

So sánh hai sự tham khảo đến một đối tượng

Type GetType()

public

Trả về chi tiết kiểu của một đối tượng.

object MemberwiseClone()

protected

tạo ra một bản copy của đối tượng

void Finalize()

protected virtual

Đây là một dạng Destructor của .Net

Chúng ta không thể hiểu chính xát cách sử dụng của mọi phương thức trong lớp Object vào giai đoạn này.

Phương thức ToString()

Phương thức ToString() rất tiện lợi khi bạn muốn lấy một chuỗi mô tả đối tượng. Ví dụ:

int i = -50;

string str = i.ToString(); //returns "-50"

Thêm một ví dụ khác :

enum Colors {Red, Orange, Yellow};

// later on in code...

Colors favoriteColor = Colors.Orange;

string str = favoriteColor.ToString(); //returns "Orange"

Object.ToString() được khai báo như virtual . Trong C#, các kiểu dữ liệu có sẳn đã được override cho chúng ta để trả chuỗi đúng với sự mô tả của các kiểu đó. Nếu bạn không override phương thức ToString() trong lớp bạn định nghĩa, thì lớp bạn sẽ thừa kế sự thực thi phương thức ToString() của system.Object và xuất ra tên lớp của bạn. Nếu bạn muốn phương thức ToString() trả về một chuỗi chứa nội dung thông tin về giá trị của đối tượng của lớp bạn tạo ra thì bạn phải override phương thức ToString().

Ví dụ:

using System;
namespace Wrox.ProCSharp.OOCSharp
{
  class Money
  {
    private decimal amount;
    public decimal Amount
    {
      get
      {
        return amount;
      }
      set
      {
        amount = value;
      }
    }
  }
  class BetterMoney : Money
  {
    public override string ToString()
    {
      return "$" + Amount.ToString();
    }
  }
  class MainEntryPoint
  {
    static void Main(string[] args)
    {
      Money cash1 = new Money();
      cash1.Amount = 40M;
      Console.WriteLine("cash1.ToString() returns: " + cash1.ToString());
      cash1 = new BetterMoney();
      cash1.Amount = 40M;
      Console.WriteLine("cash1.ToString() returns: " + cash1.ToString());
      Console.ReadLine();
    }
  }
}

Trong ví dụ trên, phương thức Main() trước tiên khởi tạo đối tượng cash1 của lớp Money, sau đó lại cũng khởi tạo chính đối tượng cash1 nhưng là của lớp BetterMoney. Trong cả hai trường hợp cash1 đều gọi phương thức ToString() nhưng với đối tượng cash1 của lớp Money thì sẽ thực thi phương thức của lớp System.Object, còn với đối tượng cash1 của lớp BetterMoney thì sẽ thực thi phương thức override phương thức ToString(). Kết quả sau khi chạy đoạn mã trên sẽ là:

cash1.ToString() returns: Wrox.ProCSharp.OOCSharp.Money
cash1.ToString() returns: $40

» Tiếp: Nạp chồng toán hạng
« Trước: Common Language Runtime
Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên
Copied !!!