从具体类型的整数中抽象出来

时间:2011-04-18 07:39:45

标签: c# .net generics c-preprocessor

我正在编写一个使用不同类型的整数运行的软件(uint,short,ushort,byte等)。问题是这些数字的类型可能会改变,或者在某些情况下需要不同的这些类型的组合。问题是:处理这种情况的最佳做法是什么?我可以考虑使用#define或使类通用。但是对于泛型类型没有任何合适的约束。

编辑:整数用于不同硬件的配置文件中。它们可能使用不同的字节序或不同类型的整数。

2 个答案:

答案 0 :(得分:5)

使用泛型,您可以在此处使用的最佳约束是:struct,这不是非常严格的限制并且不会让您访问任何有用的内容。如果问题是运营商,那么各种各样的黑客攻击; MiscUtil提供操作员支持泛型,或dynamic也可以工作(几乎同样快,只要你没有使用Nullable<T>)。

如果您需要编译时间,using别名可能会有所帮助,即(在每个文件中)

using Number = System.Int32;

答案 1 :(得分:1)

不能使用这样的泛型来抽象值类型,没有为您提供任何有用功能的公共基础。您最好围绕.NET中的值类型创建自己的结构,并对它们进行编码以使运算符相互协作。显然,你对这些结构的处理取决于你选择给他们的行为。

使用这些包装结构,您还可以定义一个公共基础,为您提供有用的东西。