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 중국어 웹사이트의 기타 관련 기사를 참조하세요!