2016-10-27 22 views
1

object으로 박스형 된 정수 (또는 다른 값 유형)와 함께 제공되는 경우 default()을 사용할 방법이 없다고 확신합니다 (기본 값은 주어진 타입)을 기본 boxed 디폴트 값을 반환하기 위해 직접적으로, 이것이 맞습니까?'Object'유형의 인스턴스에서 'Default'키워드 사용

차라리 다음과 같이 조건문의 부하를 작성하지 않고도 한 번의 작업으로 object에 전화를 걸 것

:

public object GetDefaultVal(object obj){ 
if(obj is Guid){ 
    return default(Guid); 
} 
if(obj is double){ 
    return default(double); 
} 
.... 
} 
+0

반환 기본값 (typeof (obj))? – Henningsson

+1

메소드 이름을 제공하지 않아서 샘플이 컴파일되지 않으며'default' 대신'Default'를 사용한다는 점에서 여러분이 묻는 것은 매우 명확하지 않습니다. –

+1

@Henningsson typeof()는 typeof의 인스턴스를 반환하지 않으므로 항상 null이됩니다 ... – maxp

답변

2

을 당신이 일반적인 것으로 방법을 변경할 수 없습니다 가정하면, 당신은 할 수 모든 값 형식은 매개 변수가없는 생성자를 제공한다는 사실을 사용, 그래서 당신은 Activator.CreateInstance를 호출 할 수 있습니다. (모든 참조 형식에 대한 기본 값이 null)

public object GetDefaultValue(object obj) 
{ 
    Type type = obj.GetType(); 
    return type.IsValueType ? Activator.CreateInstance(type) : null; 
}