Nếu bạn thực hiện loại so sánh với chỉ một nơi, sau đó nó có lẽ là không đáng cố gắng để làm cho nó ngắn hơn (đặc biệt là nếu nó tác động đến hiệu suất).
Tuy nhiên, nếu bạn so sánh độ dài danh sách tại hơn một nơi, nó có lẽ là đáng giá đặt nó trong một chức năng sau đó tái sử dụng nó nhiều lần:
static bool SameLength<T>(params IList<T>[] lists) {
int len = -1;
foreach (var list in lists) {
int list_len = list.Count;
if (len >= 0 && len != list_len)
return false;
len = list_len;
}
return true;
}
static void Main(string[] args) {
// All of these lists have same length (2):
var list1 = new List<int> { 1, 2 };
var list2 = new List<int> { 3, 4 };
var list3 = new List<int> { 5, 6 };
var list4 = new List<int> { 7, 8 };
var list5 = new List<int> { 9, 10 };
var list6 = new List<int> { 11, 12 };
if (SameLength(list1, list2, list3, list4, list5, list6)) {
// Executed.
}
// But this one is different (length 3):
var list7 = new List<int> { 11, 22, 33 };
if (SameLength(list1, list2, list3, list7, list4, list5, list6)) {
// Not executed.
}
}
--- EDIT ---
Dựa trên Dean Barnes' idea, bạn thậm chí có thể làm điều này để thực hiện thêm ngắn:
static bool SameLength<T>(params IList<T>[] lists) {
return lists.All(list => list.Count == lists[0].Count);
}
Nguồn
2011-11-11 13:31:23
thay vì 'Take (2) Count() == 1' tôi thích '.Skip (1) .A ny() 'thành ngữ – sehe