Tôi chỉ viết một câu lệnh if trong dòngĐây có phải là cách sử dụng tốt của ExtensionMethod không?
if (value == value1 || value == value2 || value == value3 || value == value4)
//do something
và nó làm phiền tôi mà tôi luôn phải lặp lại 'giá trị ==' phần. Theo tôi, điều này là không phục vụ mục đích nào khác ngoài việc làm cho nó khó đọc.
tôi viết ExtensionMethod sau đó nên làm cho kịch bản trên dễ đọc hơn:
public static bool IsEqualToAny<T>(this T value, params T[] objects)
{
return objects.Contains(value);
}
Bây giờ tôi chỉ có thể viết
if (value.IsEqualToAny(value1, value2, value3, value4))
//do something
Đây có phải là một cách sử dụng tốt của một ExtensionMethod?
EDIT:
Cảm ơn tất cả các câu trả lời tuyệt vời. Đối với hồ sơ: Tôi đã giữ phương pháp. Trong khi gợi ý rằng bạn chỉ có thể sử dụng new []{value1,value2,value3,value4}.Contains(value)
là sự thật, tôi chỉ đơn giản là thích đọc loại này của câu lệnh if từ trái sang phải (nếu giá trị này tương đương với bất kỳ của các thay vì nếu những giá trị này chứa giá trị này). Có thêm một phương pháp hiển thị trong intellisense trên mỗi đối tượng không phải là một vấn đề đối với tôi.
cảm ơn. Nó khá chung chung. Tôi đã chỉ so sánh một giá trị enum - nó có liên quan đến lập trình GUI nên nó không có bất kỳ ý nghĩa kinh doanh nào như vậy. –