Tôi cố gắng để chuyển đổi các giá trị của các giá trị T tham số kiểu generic vào số nguyên sau khi thực hiện chắc chắn rằng T là trong thực tế số nguyên:Làm thế nào để chuyển đổi giá trị của Generic Type Argument thành một loại bê tông?
public class Test
{
void DoSomething<T>(T value)
{
var type = typeof(T);
if (type == typeof(int))
{
int x = (int)value; // Error 167 Cannot convert type 'T' to 'int'
int y = (int)(object)value; // works though boxing and unboxing
}
}
}
Mặc dù nó hoạt động thông qua boxing và unboxing, đây là một hiệu suất chi phí bổ sung và tôi đã lang thang nếu có một cách để làm điều đó trực tiếp.
Vì vậy, hãy cho tôi hiểu điều này ... Bạn đang xây dựng một phương pháp chung chung, nhưng nó cần phải biết nếu tham số kiểu là một int? Thiết kế của bạn, có điều gì đó sai trái với nó. – Will
Bất kỳ lý do nào để không thêm quá tải 'void DoSomething (int value) {}'? –
Đây là một ví dụ đơn giản. Mã thực tế có nhiều thứ trước và sau khi chuyển đổi được hưởng lợi từ generics –