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");
   }

}   

}
4

1 に答える 1

1

if ステートメントを避けるために、以下を調べることができます。クラスにフィルターを追加して、特定のタイプに制限することも検討できます。

public void getValue(ref T val)
{
   object retVal = compute<T>();
   val = (T)retVal;
}
于 2013-10-03T00:00:26.437 に答える