我有以下代码:
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>工作)?