2009-10-20 38 views
5

Đây có phải là loại thử nghiệm cần thiết khi loại bỏ một mục không?C# Danh sách <T> Chứa kiểm tra

if (_items.Contains(item)) 
{ 
    _items.Remove(item); 
} 

Và còn thử nghiệm này thì sao?

if (!_items.Contains(item)) 
{ 
    _items.Add(item); 
} 
+2

Tại sao bạn không chỉ đọc tài liệu và/hoặc dùng thử? Có vẻ như một điều đơn giản để tìm ra. –

+4

Tôi không thấy có vấn đề gì với việc đặt câu hỏi trên Stackoverflow, mặc dù bạn đã đúng khi đọc tài liệu luôn là một phản xạ tốt. Câu trả lời ở đây cũng có thể cung cấp cái nhìn sâu sắc bổ sung có thể thú vị cho anh ta (như đề cập đến Hashset trong câu trả lời thứ hai). –

Trả lời

11

Bạn không phải kiểm tra để xóa. Xóa() sẽ trả về false nếu nó không xóa bất kỳ thứ gì.

Nếu bạn không muốn các mục trùng lặp trong danh sách của mình, bạn có thể kiểm tra trước khi thêm. Nếu không, bạn sẽ có bản sao.

Xem thêm: http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx

+2

Nếu bạn không muốn bản sao, bạn không nên kiểm tra; bạn nên sử dụng một bộ sưu tập không cho phép bạn có bản sao. Nếu không, bạn không có chủ đề an toàn. – Tordek

+0

Giả sử an toàn luồng là một vấn đề. Nếu có, bạn cũng cần phải chắc chắn rằng lớp sưu tập của bạn là an toàn thread (tôi đoán MS có thể là, idk). – snarf

7

Bạn cũng có thể sử dụng một HashSet <T> nếu bạn muốn để có thể Add() một mục nhiều lần và có nó chỉ tồn tại trong bộ sưu tập một lần, mà không cần kiểm tra Chứa() Đầu tiên.

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