다음 예제에서는 ConvertNumericStringObj를 두 번 호출하여 Type int 개체를 두 번 보냅니다.숫자 문자열 개체를 nullable 숫자로 변환하는 방법
string strValue = "123";
object obj = ConvertNumericStringObj(typeof(int), strValue);
object obj = ConvertNumericStringObj(typeof(int?), strValue);
public static object ConvertNumericStringObj(Type conversion, object value)
{
var t = conversion;
if (t.IsGenericType && t.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))
{
if (value == null)
{
return null;
}
t = Nullable.GetUnderlyingType(t);
}
return Convert.ChangeType(value, t);
}
내 질문은 : 그것은 int?
개체를 반환하므로이를 문자열 및 int?
유형에 전달하고 변환 어떻게든지이 있습니까?
: Int.TryParse는() – bit
당신은' 박스형'Null 허용을 가질 수 없습니다. 런타임에는 nullable에 대한 특별한 boxing 동작이 있습니다. 객체 참조가 박스형'T' 인 경우에는 항상 'T?'로 변환 될 수 있습니다. –
mike z의 의견보기. 즉, 메서드를 변경할 수 있으면 일반화하고 객체 대신 T를 반환하도록 할 수 있습니다. 그건 Nullable 권투 제한 주위에 얻을 것이다. 그런 다음 Nullable 코드가 이미 존재합니다 (Convert.ChangeType이 Nullable 으로 변환되지 않기 때문에 거기에 있음). 기본 형식으로 변환하여 Nullable 에 다시 바인딩하여 반환하십시오. 그것. 가는 데는 많은 어려움이 있습니다. 그러나 이런 식으로해야한다면, 할 수 있습니다. –