제네릭 유형이 문자열인지 테스트하는 가장 좋은 방법은 무엇입니까?(씨#)

StackOverflow https://stackoverflow.com/questions/31498

  •  09-06-2019
  •  | 
  •  

문제

모든 유형, 기본 또는 기타를 허용해야하는 제네릭 클래스가 있습니다.이것의 유일한 문제는 default(T)를 사용하는 것입니다.값 유형 또는 문자열에서 default를 호출하면 적절한 값 (예 : 빈 문자열)으로 초기화됩니다.개체에 대해 default(T)를 호출하면 null이 반환됩니다.여러 가지 이유로 기본 유형이 아닌 경우 null이 아닌 유형의 기본 인스턴스가 있는지 확인해야합니다.다음은 시도 1입니다. 라코 디스

문제-문자열이 값 유형이 아니지만 매개 변수가없는 생성자가 없습니다.따라서 현재 솔루션은 다음과 같습니다. 라코 디스

하지만 이건 멍청한 느낌이에요.문자열 대소 문자를 처리하는 더 좋은 방법이 있습니까?

도움이 되었습니까?

해결책

default (string)은 string.Empty가 아니라 null입니다.코드에 특별한 경우가 필요할 수 있습니다. 라코 디스

다른 팁

라코 디스

테스트되지 않았지만 가장 먼저 떠오른 것이 있습니다.

TypeCode 열거를 사용할 수 있습니다.IConvertible 인터페이스를 구현하는 클래스에서 GetTypeCode 메서드를 호출하여 해당 클래스의 인스턴스에 대한 형식 코드를 가져옵니다.IConvertible은 Boolean, SByte, Byte, Int16, UInt16, Int32, UInt32, Int64, UInt64, Single, Double, Decimal, DateTime, Char 및 String으로 구현되므로이를 사용하여 기본 형식을 확인할 수 있습니다." 일반 유형 검사 "에 대한 추가 정보

개인적으로 저는 메소드 오버로딩을 좋아합니다. 라코 디스

String에 대한 논의는 여기서 작동하지 않습니다.

제네릭이 작동하도록하려면 다음 코드가 필요했습니다.- 라코 디스

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top