«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Можно ли быть общим типами в C# быть подписанными к конкретным типам?

Можно ли быть общим типами в C# быть подписанными к конкретным типам?

Опубликовано в 2025-03-22
Просматривать:460

Can Generic Types in C# Be Cast to Specific Types?

могут быть общие типы в конкретные типы?

В недавнем запросе, программист из фонового фона 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