Компилятор не позволит вам назначить двойной неизвестный тип:
outList.Add (дублированный);
Для всего, что он знает, вы можете попытаться присвоить dbl типу FluxCapacitor. Ваш код пытается выполнить две несовместимые вещи: вернуть список общего (неизвестного) типа и 2) заставить этот тип быть двойным. Это не имеет смысла, поэтому у вас возникают трудности. Вы можете использовать отражение (как указал Поркс с отличной ссылкой), чтобы решить эту проблему динамически, но вам действительно нужно спросить себя: почему вы пытаетесь присвоить номер с плавающей точкой классу, который имеет неизвестный тип? Вызывающий код может запрашивать результат List<bool>
. Какой смысл было бы предпринять, чтобы попытаться назначить
double foo = 1.5;
bool bar = foo;
? Нуль. Вы можете заставить компилятор сделать что-нибудь с достаточным количеством сальто, но вам нужно переоценить цель вашей подпрограммы, почему вы пытаетесь поместить определенный тип данных в общий, и нужно ли этой подпрограмме возвращать общий список.
Я не могу увидеть, что ваша цель в этом коде, но я думаю, что если вы читаете главы в «C# в глубине» Джона Скита «Об общих, перечислимых и Linq», вы найдете все, что вам нужно, в том числе примеры, которые очень близки к тому, что я предполагаю, ваше намерение. best, – BillW
@BillW - вы абсолютно правы! (косвенно). См. Сайт книги, http://csharpindepth.com/ViewChapterNotes.aspx?Chapter=3, примечание 3.6.2 - который указывает на ответ, уже принятый для этого вопроса ;-p –