C#で文字列式を演算する

文字列の式を演算したいと思う場合が結構あります。

DataTable.Compute()メソッドで実現できることが分かったので、実装して見ました。

以下が作成したメソッドです。string型の拡張メソッドになっています。
public static T Calc<T>(this string s, params object[] args) {
 using (DataTable dt = new DataTable()) {
  s = string.Format(s, args);
  object result = dt.Compute(s, “”);
  var converter = TypeDescriptor.GetConverter(typeof(T));
  return (T)converter.ConvertFromString(result.ToString());
 }
}

以下のように使うと、(2+4)/2の数値演算を行い、3を返します。
var value = “({0} + {1}) / 2″.Calc<double>(2,4);

以下のように使うと、2>=4の論理演算を行い、falseを返します。
var value = “{0} >= {1}”.Calc<bool>(2,4);

簡単ですね。

コメントを残す