Tôi muốn tạo một phương thức đơn giản chấp nhận cả hai loại tham số loại và tham chiếu, tức là int là giá trị và chuỗi là tham chiếu.Tạo phương thức chung C# có chấp nhận loại giá trị và kiểu tham chiếu có thể (nullable) không?
Vì vậy, đây là những gì tôi bắt đầu với:
public bool areBothNotNull<T>(T? p1, T? p2)
{
return (p1.HasValue && p2.HasValue);
}
Vì vậy, tôi muốn để có thể sử dụng nó như thế này:
var r1 = areBothNotNull<int>(3, 4); // will be true
var r2 = areBothNotNull<int>(3, null); // will be false
var r3 = areBothNotNull<string>("three", "four"); // will be true
var r4 = areBothNotNull<string>(null, "four"); // will be false
Nhưng vấn đề đầu tiên tôi gặp phải là
The type 'T' must be a non-nullable value type in order to use it as parameter 'T' in the generic type or method 'System.Nullable'
Để tiếp tục, tôi thêm ràng buộc struct vào phương pháp của tôi
public bool areBothNotNull<T>(T? p1, T? p2) where T : struct
Nhưng bây giờ phương pháp này sẽ không chấp nhận chuỗi các cuộc gọi dựa, và mang lại cho tôi lỗi này:
The type 'string' must be a non-nullable value type in order to use it as parameter 'T' in the generic type or method.
Đây có phải là có thể? Hay tại sao chúng ta ngăn cản việc này?
dường như điều lạ lùng muốn làm? –
Điều này không lạ, nó chỉ có mùi ngọt ngào của C++. –