我有以下代码:
static Func<object, string> s_objToString = (x) => x.ToString();
static Func<string, string> s_stringToString = s_objToString; //compiles
static Func<int, string> s_intToString = s_objToString; //error
第二行编译,但第三行编译失败,出现错误:
无法将类型“
System.Func<object,string>
”隐式转换为“System.Func<int,string>
”
这是为什么?
我知道,虽然 string 是从 object a派生而List<string>
不是从 派生的List<object>
,但是在遗传学object
中string
起作用并且失败object
了int
,为什么?
好吧,假设我明白为什么;现在的问题是有没有办法解决它(除了定义MyInt
类来装箱int
,因为Func<object,string>
可以Func<MyInt,string>
工作)?