могут быть общие типы в конкретные типы?
В недавнем запросе, программист из фонового фона C обратился за помощью к составлению общих типов к конкретным типам в C#. Предоставленный код:
T HowToCast(T t) { if (typeof(T) == typeof(string)) { T newT1 = "some text"; T newT2 = (string)t; } return t; }
не удалось скомпилировать, с компилятором, жалующимся на неспособность преобразовать из «t» в строку.
понимание проблемы требует признания того, что, несмотря на то, что он находится в пределах оператора if, компилятор не может сделать вывод, что «t» - тип строки. Следовательно, кастинг терпит неудачу. Чтобы решить эту проблему, нужно сначала поднять «t» на «объект», как любой «t» может быть поднят в «объект», а затем дополнительно отменить из «объекта» в желаемый конкретный тип, такой как «строка».
исправленный код:
T newT1 = (T)(object)"some text"; string newT2 = (string)(object)t;
демонстрирует правильный подход.
]Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3