>백엔드 개발 >C++ >C#에서 일반 유형 'T'를 문자열로 안전하게 캐스팅하는 방법은 무엇입니까?

C#에서 일반 유형 'T'를 문자열로 안전하게 캐스팅하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-29 02:59:14373검색

How to Safely Cast a Generic Type 'T' to a String in C#?

C#에서 일반 유형 변환

다음 질문은 개발자들 사이에서 자주 발생합니다. "오류: 'T' 유형의 값을 다음으로 변환할 수 없습니다. '끈'." 이 문제는 일반 유형 'T'를 특정 구체적인 유형으로 변환하려고 할 때 발생합니다.

다음 방법을 고려하십시오.

T HowToCast<T>(T t)
{
    if (typeof(T) == typeof(string))
    {
        T newT1 = "some text";
        T newT2 = (string)t;
    }

    return t;
}

C 배경에서 왔음에도 불구하고 이 코드는 실패합니다. 엮다. 컴파일러는 "암시적으로 'T' 유형을 문자열로 변환할 수 없습니다." 및 "'T' 유형을 문자열로 변환할 수 없습니다."와 같은 오류를 발생시킵니다.

문제 이해

여기서 중요한 문제는 컴파일러가 'T'의 특정 유형을 결정할 수 없다는 것입니다. 'T'가 문자열인지 확인하는 if 블록 내에 있더라도 컴파일러는 컴파일 타임에 이 정보를 갖고 있지 않습니다.

해결책

해결 방법 이 문제에서는 '객체'에 대한 중간 캐스트를 수행해야 합니다. 모든 일반 유형을 '객체'로 캐스팅할 수 있으므로 '객체'에서 원하는 구체적인 유형(이 경우 문자열)으로 캐스팅할 수 있습니다.

수정된 코드는 다음과 같습니다.

T newT1 = (T)(object)"some text";
string newT2 = (string)(object)t;

'객체'에 대한 중간 캐스팅을 수행하여 변환을 명시적으로 지정하고 컴파일러가 작업을 올바르게 수행할 수 있는지 확인합니다.

위 내용은 C#에서 일반 유형 'T'를 문자열로 안전하게 캐스팅하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.