ậ L p trình trên Windows  v iớ  Microsoft® .NET

Giảng viên : Hồ Hoàn Kiếm

Overloading Methods

 Áp dụng cho các toán tử :

Overloading Methods

public class Point

{

public int m_x; public int m_y; public Point (){ } public Point(int xx,int yy) {

m_x = xx ; m_y = yy;

}

public static Point operator + (Point p1,Point p2) { Point result = new Point(); result.m_x = p1.m_x + p2.m_y; result.m_y = p1.m_x + p2.m_y; return result;

}

}

Overloading Methods

static void Main(string[] args)

{

Point objP1 = new Point(1,1);

Point objP2 = new Point(2,2);

Point objResult = new Point();

objResult = objP1 + objP2;

Console.WriteLine("The result is m_x = {0} and m_y = {1}", objResult.m_x , objResult.m_y);

}

Kiểu Structs

 Kiểu dữ liệu do người dùng định nghĩa.

 Có thể định nghĩa các phương thức.

 Có thể định nghĩa các Constructors

 Structs là kiểu tham trị .

 Structs không được kế thừa .

Kiểu Structs

public struct Point

{

public int x, y; public Point(int p1, int p2) {

x = p1; y = p2;

} public int Add() {

return x+y;

}

}

Kiểu Structs

static void Main(string[] args)

{

Point p1 = new Point() ; Point p2 = new Point(10,10);

Console.Write(" Point 1: "); Console.WriteLine("x = {0}, y = {1}", p1.x, p1.y);

Console.Write(" Point 2: "); Console.WriteLine("x = {0}, y = {1}", p2.x, p2.y); Console.WriteLine("Call Add method: {0}",p2.Add()); Console.ReadLine();

}

Kiểu Enumrator

 Tập hợp các hằng số đã được đặt tên. enum Days

{

//mac dinh Phan tu dau tien bat tu 0 Sat, Sun, Mon, Tue, Wed, Thu, Fri

};

Kiểu Enumrator

public static void Main()

{

int x = (int) Days.Sun;

int y = (int) Days.Fri;

Console.WriteLine("Sun = {0} : Value : {1}", x,Days.Sun);

Console.WriteLine("Fri = {0} : Value : {1}", y,Days.Fri );

 Kết quả :

}

Sun = 2 : Value : Sun

Fri = 7 : Value : Fri

Properties

 Sử dụng để truy cập các thành phần Private.

 Kiềm tra dữ liệu cho các thành phần trong lớp .

public class Square

{

public double mSide;

} public class Test

{

{

static void Main() Square obj = new Square (); obj. mSide = 3; }

}

Properties …

public class Square {

//Khi báo các thành phần private double mSide;

// Khai báo property public double Side { get { }; set { }; }

// Khai báo các phương thức }

Properties …

 Property giống như field, nhưng việc truy cập đươc

thực hiện qua thao tác get và set .

public int Side { get { return mSide; }

set {

if (mSide < 0) return ;

mSide = value; } }

Properties …

namespace SampleProperty

{

public class Rectangle {

private int m_Length ; private int m_Width ; private int m_Area ;

public Rectangle() {

m_Length = 3; //<=> Length = 3; m_Width = 2;

}

Properties …

public int Length {

get

{

return m_Length; } set { if(m_Length < 0 ) return; m_length = value; }

}

Properties …

public int Width

{

get

{

return m_Width;

}

set

{

// Đọan mã kiểm tra giá trị …..

m_Width = value;

}

}

Properties …

public int Area { get { return m_Area; } }

public void CalArea() { m_Area = m_Length*m_Width; }

Properties …

public class Test { public static void Main() { Rectangle objRectangle = new Rectangle(); objRectangle. Length = 3; objRectangle. Width = 4; objRectangle.CalArea(); Console.WriteLine("{0}", objRectangle. Area ); } }

Indexer

 Khi thành phần của lớp là các kiểu tập hợp.

 Sử dụng với : new, virtual, override, abstract, extern.

 Indexer giống như Property, đuợc truy cập thông qua

get và set

 Khai báo sử dụng từ khóa this.

 Khi sử dụng Indexer ta sử dụng dấu [] cho get và

set .

Indexer

class IndexerClass

{

private int [] myArray = new int[100];

public int this [int index] {

get { If (index < 0 || index >= 100) return 0; else

return myArray[index];

} set { if (!(index < 0 || index >= 100)) myArray[index] = value; }

} }

Indexer

public class Test {

{

public static void Main() { IndexerClass b = new IndexerClass(); b[3] = 256; b[5] = 1024; for (int i=0; i<=10; i++) Console.WriteLine("Element # {0} = {1}", i, b[i]);

}

}

}