Tôi vừa nhận thấy các đối tượng HashTable có một phương thức Contains và CotainsKey, với cùng một mô tả. Vậy là họ chỉ đồng nghĩa hoặc là có som edifference đằng sau hậu trường.Net Hashtable - Chứa vs ContainsKey
13
A
Trả lời
18
Nếu bạn kiểm tra mã chứa Chứa phản xạ, bạn có thể thấy rằng nó trực tiếp gọi ContainsKey.
Các IL là:
.method public hidebysig newslot virtual instance bool Contains(object key) cil managed
{
.maxstack 8
L_0000: ldarg.0
L_0001: ldarg.1
L_0002: callvirt instance bool System.Collections.Hashtable::ContainsKey(object)
L_0007: ret
}
này dịch như sau C#
public virtual bool Contains(object key)
{
return this.ContainsKey(key);
}
+0
Vậy tại sao ContainsKey là công khai? – Imad
1
Không họ cư xử giống hệt nhau
8
Phương pháp Contains
chỉ gọi phương thức ContainsKey
nội bộ - bạn có thể kiểm tra điều này bằng Reflector.
Câu hỏi hay! 'Contains' là có để thực hiện' IDictionary.Contains', mà "xác định xem đối tượng' IDictionary' có chứa một phần tử với khóa được chỉ định "- vậy tại sao' ContainsKey' ở đó ?! – AakashM
thực phẩm hmm để suy nghĩ. Tại sao bạn không mở một câu hỏi riêng cho việc này. – Midhat