私のプロジェクトの1つでは、次の2つの方法を使用しています。1.GetDoubleValueおよび2.GetIntValue。GetDoubleValueはdouble.TryParseを使用してstrstringをパラメーター化し、失敗した場合は0を返し、GetIntValueはint.TryParseをパラメーターstr stringに対して試行し、失敗した場合は0を返します。私が欲しいのは、これら2つのメソッドを1つのジェネリックメソッドに結合し、文字列strとともにパラメーターTも受け取るようにすることです。これにより、GetDoubleValueメソッドを使用する場合は、パラメーターTにdoubleを使用でき、GetIntValueメソッドを使用する場合は、パラメータTのInt
public double GetDoubleValue(string str)
{
double d;
double.TryParse(str, out d);
return d;
}
public int GetIntValue(string str)
{
int i;
int.TryParse(str, out i);
return i;
}
注:私はこのようなことを試しました。
private T GetDoubleOrIntValue<T>(string str) where T : struct
{
T t;
t.TryParse(str, out t);
return t;
}
編集
私のデータベースには、数値データ型を持つ異なるテーブルに30を超える列があります。ユーザーがテキストボックスに何も入力しない場合、つまり、テキストボックスのすべてまたは一部を空のままにした場合は、各列に0を挿入します。GetIntValueメソッドを使用しない場合、メソッド本体を30回以上使用する必要があります。それが私がメソッドアプローチを通じてこれを行っている理由です。たとえば、30以上の例のうち3つを書いています
cmd.Parameters.Add("@AddmissionFee", SqlDbType.Decimal).Value = GetIntValue(tbadmissionfee.Text);
cmd.Parameters.Add("@ComputerFee", SqlDbType.Decimal).Value = GetIntValue(tbcomputerfee.Text);
cmd.Parameters.Add("@NotesCharges", SqlDbType.Decimal).Value = GetDoubleValue(tbnotescharges.Text);
私は前述の2つの方法を組み合わせたいと思います。なぜなら、今日私はこのような2つの方法を持っているので、組み合わせてもプログラミングの改善は得られませんが、明日はこのような方法を数十個持って、1つの一般的な方法に組み合わせるほうがよいでしょう。たとえば、GetInt32Value、GetShortValueなどがあるかもしれません。これが必要な理由が明確になったことを願っていますか?