Giáo trình phân tích cấu tạo bo mạch mảng một chiều các giá trị bên trong dấu ngoặc p10 - Pdf 19

Ngôn Ngữ Lập Trình C#
Keys Thuộc tính trả về một ICollection chứa những khóa
trong hashtable.
Values Thuộc tính trả về một ICollection chứa những giá
trị trong hashtable.
Add() Thêm một thành phần mới với khóa và giá trị xác
định.
Clear() Xóa tất cả đối tượng trong hashtable.
Item() Chỉ mục cho hastable
Clone() Tạo ra một bản sao
Contains() Xác định xem một thành phần có trong hashtable.
ContainsKey() Xác định xem hashtable có chứa một khóa xác
định
CopyTo() Sao chép những thành phần của hashtable đến
mảng một chiều đã tồn tại
GetEnumerator() Trả về một enumerator cho hashtable.
GetObjectData() Thực thi ISerializable và trả về dữ liệu cần thiết để
lưu trữ.
OnDeserialization Thực thi ISerializable và phát sinh sự kiện
deserialization khi hoàn thành.
Remove() Xóa một thành phần với khóa xác định.
Bảng 9.6: Phương thức và thuộc tính của lớp Hashtable.
Trong một Hashtable, mỗi giá trị được lưu trữ trong một vùng. Mỗi vùng được đánh số tương
tự như là từng offset trong mảng. Do khóa có thể không phải là số nguyên, nên phải chuyển
các khóa thành các khóa số để ánh xạ đến vùng giá trị được đánh số. Mỗi khóa phải cung cấp
phương thức GetHashCode() để nhận giá trị mã hóa thành số của nó. Chúng ta nhớ rằng mọi
thứ trong C# đều được dẫn xuất từ lớp object. Lớp object cung cấp một phương thức ảo là
GetHashCode(), cho phép các lớp dẫn xuất tự do kế thừa hay viết lại. Việc thực thi thông
thường của phương thức GetHashCode() đối với chuỗi thì đơn giản bằng cách cộng các giá
trị Unicode của từng ký tự lại rồi sau đó sử dụng toán tử chia lấy dư để nhận lại một giá trị từ
0 đến số vùng được phân của hashtable. Ta không cần phải viết lại phương thức này với kiểu

Ví dụ 9.17 minh họa việc thêm một item vào trong bảng Hashtable và sau đó truy cập lại
chúng thông qua thuộc tính Item.
 Ví dụ 9.17: thuộc tính Item tương như như toán tử offset.

namespace Programming_CSharp
{
using System;
using System.Collections;
public class Tester
{
static void Main()
{
// tạo và khởi tạo hashtable
Hashtable hashTable = new Hashtable();
hashTable.Add(“00440123”,”Ngoc Thao”);
hashTable.Add(“00123001”,”My Tien”);
hashTable.Add(“00330124”,”Thanh Tung”);
// truy cập qua thuộc tính Item
Console.WriteLine(“myHashtable[\“00440123\”]: {0}”,
hashTable[“00440123”]);
Mảng, Chỉ Mục, và Tập Hợp
269
.
.
Ngôn Ngữ Lập Trình C#
}
}
}

 Kết quả:

foreach( string s in keys)
{
Mảng, Chỉ Mục, và Tập Hợp
270
.
.
Ngôn Ngữ Lập Trình C#
Console.WriteLine(“{0}”, s);
}
// xuất tập giá trị
foreach( string s in values)
{
Console.WriteLine(“{0}”, s);
}
}
}
}

 Kết quả:
00123001
00440123
00330124
My Tien
Ngoc Thao
Thanh Tung

Mặc dù thứ tự của keys không được đảm bảo theo thứ tự nhưng chúng đảm bảo rằng cùng với
thứ tự đưa ra của giá trị. Như chúng ta thấy trên khóa 00123001 tương ứng với My Tien,
Giao diện IDictionaryEnumerator
Những đối tượng IDictionary cũng hỗ trợ vòng lặp foreach bằng việc thực thi phương

{
IDictionaryEnumerator enumerator = table.GetEnumerator();
while ( enumerator.MoveNext() )
{
Console.WriteLine(“\t{0}:\t{1}”,
enumerator.Key, enumerator.Value);
}
Console.WriteLine();
}
}
}

 Kết quả:
hashTableg
Count: 3
Keys and Values:
00123001: My Tien
00440123: Ngoc Thao
00330124: Thanh Tung

Câu hỏi và trả lời
Câu hỏi 1: Điều phân biệt giữa mảng và các thành phần bên trong một mảng?
Trả lời 1: Mảng là kiểu dữ liệu tham chiếu, còn các thành phần bên trong mảng được cấp
phát dựa theo kiểu dữ liệu của chúng. Do vậy một mảng của kiểu dữ liệu tham chiếu sẽ
không chứa giá trị gì cả mà chỉ tham chiếu đến những thành phần được tạo ra trên heap.
Câu hỏi 2: Một lớp có bộ chỉ mục khác một mảng như thế nào?
Mảng, Chỉ Mục, và Tập Hợp
272
.
.


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status