2013-12-12 10 views
17

Từ docSự khác nhau giữa "Đặt" và "Thêm" cho ObjectCache là gì?

Add (CacheItem, CacheItemPolicy): Khi ghi đè trong một lớp học có nguồn gốc, cố gắng để chèn một mục bộ nhớ cache vào bộ nhớ cache là một trường hợp CacheItem, và cho biết thêm chi tiết về cách thức nhập nên được đuổi ra. [1]

-

Set (CacheItem, CacheItemPolicy): Khi ghi đè trong một lớp học có nguồn gốc, chèn đầu vào cache vào bộ nhớ cache là một trường hợp CacheItem, xác định thông tin về cách thức nhập sẽ bị đuổi. [2]

tôi thấy ít sự khác biệt trong cách diễn đạt (cố gắng để) và chữ ký (set là một phụ, add trả về một boolean), nhưng tôi không chắc chắn cái nào tôi nên sử dụng và nếu có thực sự là một cái gì đó khác nhau giữa cả hai.

Trả lời

24

Sự khác biệt chính là phương pháp Add() cố gắng chèn bộ nhớ cache mà không ghi đè mục nhập bộ nhớ cache hiện có bằng cùng một khóa.

Trong khi phương pháp Set() sẽ ghi đè mục nhập bộ nhớ cache hiện có có cùng khóa. [Tuy nhiên Nếu khóa cho một mục không tồn tại, chèn sẽ được thực hiện như một mục nhập bộ nhớ cache mới].

Trên đây là sự khác biệt về chức năng của chúng.

Difference cú pháp:

Một sự khác biệt cú pháp quan trọng là phương pháp Add() trả về một Boolean là true nếu chèn thành công, hoặc false nếu đã có một mục trong bộ nhớ cache có phím tương tự như mục . Phương thức Set() có loại trả về void.

Điểm cuối cùng là thực hiện nội bộ phương thức Add() thực sự gọi phiên bản tương ứng của phương thức AddOrGetExisting().

public virtual bool Add(CacheItem item, CacheItemPolicy policy) 
{ 
    return this.AddOrGetExisting(item, policy) == null; 
} 
+2

Câu trả lời ngắn gọn hoàn hảo về một đôi phương pháp ít mơ hồ. Đây là lý do tại sao tôi yêu SO bạn có thể tiết kiệm cho tôi một giờ hoặc tìm kiếm hoặc thử nghiệm. –

+1

Dường như phương thức Thêm sẽ không tạo mục bộ nhớ cache nếu một mục bộ nhớ cache khác có cùng khóa tồn tại! – Sunil

Các vấn đề liên quan