Tôi muốn viết một hàm chung có một ràng buộc về kiểu. Cụ thể là tôi muốn một cái gì đó như thế này:Các ràng buộc chung về chức năng
bool IsInList<T>(T value, params T[] args)
{
bool found = false;
foreach(var arg in args)
{
if(arg == value)
{
found = true;
break;
}
}
return found;
}
Điểm phúc mà bạn có thể kiểm tra xem một mục là trong một tức là danh sách tham số:
if(IsInList("Eggs", "Cheese", "Eggs", "Ham"))
Tuy nhiên, trình biên dịch croaks trên dòng bình đẳng. Vì vậy, tôi muốn đặt trong một hạn chế về loại mà nó thực hiện IEquatable. Tuy nhiên, các ràng buộc dường như chỉ hoạt động ở cấp lớp. Đây có phải là chính xác, hoặc là có một số cách để xác định này nói chung?
Bạn có thể sử dụng 'object.Equals (a, b)' thay vì 'a.Equals (b)' để bạn không cần phải lo lắng về các đối tượng null. – Servy
Bây giờ nếu chỉ MS cập nhật tài liệu của họ để phản ánh thực tế này, thay vì cho mọi người ấn tượng rằng ràng buộc chỉ hợp lệ đối với khai báo lớp. –