我们正在为.NET DataGrid控件开发一个自动筛选外接程序,其工作原理与相同的MS Excel功能类似。它允许输入自定义筛选条件。我们需要检查网格单元格是否符合自定义筛选条件,但问题是它是字符串格式的。为了优化性能,我们可以将字符串转换为相应的数字,并将其与单元格值作为实数进行比较,但存储此缓存值的最佳.NET数据类型是什么?Double是坏的,因为我们可能会丢失一些数据(精度),BigInteger是好的,但只适用于整数值。另一种方法可以是比较单元格文本和字符串值,以在它们为字符串格式时作为数字进行筛选。有人知道如何在.NET中以最好的方式做到这一点吗?还是只在VB.NET中进行开发?
创建一个能够存储所有可能的数字格式的自定义类:
class ParsedNumber {
NumberType Type; //Integer, FloatingPoint, Decimal
BigInteger Integer;
double FolatingPoint;
decimal Decimal;
}
这个类可能应该实现相等和比较运算符。
您可以将每个单元格解析为此类的一个实例。类应该抽象不同的格式,这样你就可以把它当作一个数字。
您也可以将其作为一个结构来保存堆分配。