我有以下来源:
private T GetValue<T>(object value)
{
return (T)value;
}
private void button1_Click(object sender, EventArgs e)
{
Int64 integer = GetValue<Int64>(0);
}
所以常数 0 是一个 Int32 并且必须在通用方法 GetValue 中转换为 Int64。但这将导致 InvalidCastException。
但为什么?
当我使用 Int64 作为参数时,它工作正常。
private T GetValue<T>(object value)
{
return (T)value;
}
private void button1_Click(object sender, EventArgs e)
{
Int64 zero = 0;
Int64 integer = GetValue<Int64>(zero);
}
感谢乔恩和布赖恩。我的最终(简化)解决方案是这样的。
private T GetValue<T>(object value)
{
return (T)Convert.ChangeType(defaultValue, typeof(T));
}
private void button1_Click(object sender, EventArgs e)
{
Int64 integer = GetValue<Int64>(0);
}