2013-10-02 3 views
0

float 및 double을 처리하기 위해 일반 클래스를 작성하려고합니다. 변수의 유형 (float 또는 double)에 따라 계산을 수행해야하지만 다음 구현이 올바른 방법인지 여부가 확실하지 않습니다. 그것에 대한 몇 가지 제안이 필요합니다.템플릿 유형을 확인하고 해당 계산을 수행하십시오.

// computeFloat is a method of some other class which actually computes and returns a float value 
float computeFloat() 
{ 
    float a; 
    .... 
    return a; 
} 

// setFloat is a method of some other class which actually sets a float value 
void setFloat(float val) 
{ 
    ..... 
} 

TestClass<T> : IDisposable 
{ 

public void getValue(ref T val) 
{ 
    if(val is float) 
    { 
     object retVal = computeFloat(); 
     val = (float)retVal; 
    } 
    else 
    { 
     throw new Exception(" Not implemented"); 
    } 
} 

public void setValue(T val) 
{ 
    if(val is float) 
    { 
     object obj = val as object; 
     float retVal = (float)obj; 

     setFloat(retVal); 
    } 
    else 
    { 
     throw new Exception(" Not implemented"); 
    } 

} 

} 
+0

마크 Gravell의 HTTP를 확인 고려해 //www.yoda.arachsys.com/csharp/miscutil/usage/genericoperators.html (http://stackoverflow.com/questions/32664/c에서 링크 -sharp-generic-constraint-only-integer) –

+0

제목을 편집했습니다. "[제목에"태그 "가 포함되어 있어야합니까?] (http://meta.stackexchange.com/questions/19190/)"합의가 "아니오, 그렇지 않아야합니다"로 표시되어야합니다. –

답변

1

당신은으로 볼 수 if 문 피하기 위해 다음. 특정 유형으로 제한하기 위해 클래스에 필터를 추가하는 것도 고려할 수 있습니다.

public void getValue(ref T val) 
{ 
    object retVal = compute<T>(); 
    val = (T)retVal; 
} 
+0

setValue 메서드는 어떻습니까? 너에게 맞는 것 같니? – veda

+1

하드 코딩 된 유형 검사를 피하기 위해 비슷한 방법을 사용합니다. – TGH

관련 문제