제네릭 유형을 특정 유형으로 캐스팅할 수 있나요?
최근 쿼리에서 C 배경을 가진 프로그래머가 C#에서 제네릭 유형을 특정 유형으로 캐스팅하는 데 도움을 요청했습니다. 제공된 코드:
T HowToCast<T>(T t) { if (typeof(T) == typeof(string)) { T newT1 = "some text"; T newT2 = (string)t; } return t; }
'T'를 문자열로 변환할 수 없다고 컴파일러가 불평하면서 컴파일에 실패했습니다.
이 문제를 이해하려면 해당 문제를 이해해야 합니다. if 문에서는 컴파일러가 'T'가 문자열 유형이라고 추론할 수 없습니다. 결과적으로 캐스팅이 실패합니다. 이 문제를 해결하려면 먼저 'T'를 'object'로 캐스팅해야 합니다. 'T'는 'object'로 캐스팅할 수 있고, 그런 다음 'object'에서 'string'과 같은 원하는 특정 유형으로 캐스팅할 수 있습니다.
수정된 코드:
T newT1 = (T)(object)"some text"; string newT2 = (string)(object)t;
올바른 접근 방식을 보여줍니다.
위 내용은 C#의 일반 유형을 특정 유형으로 캐스팅할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!