【问题标题】:Abstracting away from concrete types of integers从具体类型的整数中抽象出来
【发布时间】:2011-04-18 07:39:45
【问题描述】:

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

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

【问题讨论】:

  • “我正在编写一个使用不同类型整数运行的软件”——也许你应该更明确一点。这可能意味着任何事情

标签: c# .net generics c-preprocessor


【解决方案1】:

对于泛型,您可以在此处使用的最佳约束是:struct,这不是很严格并且不会让您访问任何有用的东西。如果问题出在 operators 上,那么围绕它会有各种 hack; MiscUtil 通过泛型提供操作员支持,或者dynamic 也可以工作(几乎一样快,只要您不使用Nullable<T>)。

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

using Number = System.Int32;

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-01-08
      • 1970-01-01
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      • 2012-05-15
      • 1970-01-01
      • 2016-10-03
      • 2019-06-08
      相关资源
      最近更新 更多