1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Hướng Đối Tượng Trong C# part 9 ppt

3 313 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Indexers và Vector trong C#
Thể loại Bài thuyết trình
Định dạng
Số trang 3
Dung lượng 131,48 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bộ lập chỉ mục : Indexer không phải là một phần quan trọng của lập trình hướng đối tượng.. Chúng cho phép bạn truy cập đến một đối tượng nếu nó là một mảng.. Thêm một Indexer vào vector

Trang 1

Bộ lập chỉ mục :

Indexer không phải là một phần quan trọng của lập trình hướng đối tượng Nhưng chúng

mô tả cú pháp tiện lợi cho phép các lớp được sử dụng trực quan hơn Chúng cho phép bạn truy cập đến một đối tượng nếu nó là một mảng

Thêm một Indexer vào vector :

Chúng ta tiếp tục sử dụng struct Vector ở trên để mô tả cách sử dụng Indexer Để tham khảo đến các thành phần của struct vector với tên x,y,z Và sự cố là các nhà toán học

thường thích xem vector như là mảng với x là phần tử đầu, y là phần tử thứ hai và z là phần tử thứ ba Và để gán giá trị cho x ta thường làm như sau:

MyVector[0] = 3.6;

Nếu xem vector như là mảng chúng ta thường có thể thực hiện các thao tác như lập lại:

for(int i = 0; i < 3; i++)

{

vect2[i] = i;

}

Với sự định nghĩa vector như hiện tại thì đoạn mã này sẽ tạo ra một lỗi nhỏ trong thời gian biên dịch, vì trình biên dịch không hiểu cái nào là phần tử đầu tiên của vector Chính

vì thế indexer sẽ giải quyết vấn đề này Indexer được định nghĩa như các thuộc tính với

các bộ truy nhập get và set Điểm khác nhau chính đó là tên của indexer là từ khoá this

Để định nghĩa một indexer cho một struct vector ta làm như sau:

struct Vector

{

public double x, y, z;

public double this [int i]

{

get

{

switch (i)

{

Trang 2

case 0:

return x;

case 1:

return y;

case 2:

return z;

default:

throw new IndexOutOfRangeException(

"Attempt to retrieve Vector element " + i) ;

}

}

set

{

switch (i)

{

case 0:

x = value;

break;

case 1:

y = value;

break;

case 2:

z = value;

break;

default:

throw new IndexOutOfRangeException(

"Attempt to set Vector element " + i);

}

}

}

// etc

Một điểm mới trong đoạn mã trên là khai báo một indexer:

public double this [int i]

Dòng này có nghĩa chúng ta xem mọi thể hiện vector như là một mảng với chỉ mục kiểu

int và trả về kiểu của phần tử là double

Bên trong phần thân của indexer, chúng ta có cùng bộ truy nhập get và set Nếu bạn muốn tạo indexer mang tính chỉ đọc hay chỉ ghi thì bạn có thể bỏ bộ truy nhập thích hợp

Bộ truy nhập get trả về kiểu đã khai báo trên indexer, set thì không trả về giá trị nào cả và

nó truy cập đến một tham số tường minh, value

Trang 3

Bây giờ chúng ta thêm vào indexer của chúng ta như sau:

static void Main()

{

Vector vect1 = new Vector(1.0, -5.0, 4.6);

Vector vect2 = new Vector();

Console.WriteLine("vect1 = " + vect1);

Console.WriteLine("vect1[1] = " + vect1[1]);

for(int i = 0; i < 3; i++)

{

vect2[i] = i;

}

Console.WriteLine("vect2 = " + vect2);

Ví dụ này việc sử dụng một vòng lặp tạo chỉ mục cho các thành phần của vector Kết quả xuất ra là:

VectorWithIndexer

vect1 = ( 1 , -5 , 4.6 )

vect1[1] = -5

vect2 = ( 0 , 1 , 2 )

Thực thi chương trình trên

 

Ngày đăng: 21/01/2014, 16:20

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w