У меня есть следующий код:
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>
"
Почему?
Я понимаю, что с генетикой, хотя строка происходит от объекта, а List<string>
не происходит от List<object>
, но здесь object
до string
работает, а object
до int
не работает, почему?
Хорошо, скажем, я понял, почему; теперь вопрос, есть ли способ обойти это (кроме определения класса MyInt
для поля int
, потому что работает Func<object,string>
до Func<MyInt,string>
)?
<>
угловые скобки), чтобы убедиться, что ваш текст отображается или пометить его соответствующим образом. - person Damien_The_Unbeliever   schedule 23.10.2012int
, просто приведя его кobject
(или передав егоs_objToString
!), Для этого вам не нужен новый класс. - person Rawling   schedule 23.10.2012s_objToString
или приведение к объекту может работать на простом решении. но моя проблема связана с такими функциями, как:public static string codeList<T>(List<T> thelist, Func<T, string> coder)
подробнее см. новый вопрос - person Roey Nissim   schedule 23.10.2012