【发布时间】:2019-02-19 11:41:59
【问题描述】:
我希望我的程序可以配置它应该使用什么类型的 int(很可能在 int16 和 int32 之间)以节省空间。
我想在代码开头确定类型,所以我只需要更改一个位置,而不是将所有int16 更改为int32。
会不会有类似的东西:
Type myIntType = int16;// or int32
//just change here
.....
.....
//lost of use of myIntType
List<myIntType> arr = new List<myIntType>();
.....
在小情况下,int 列表将包含 0 到 10,000 之间的数字
所以UInt16应该不错。
但对于大型情况,int 列表将包含 0 到 1,000,000 之间的数字
所以应该使用Int32
我什至希望有 int20。
而且列表的大小可能非常大,所以空间很密集。
【问题讨论】:
-
我认为您正在寻找泛型,但不清楚。
-
这是个坏主意。
-
不,您不能使用变量来设置泛型参数。请在该列表中添加更多关于您想做什么的信息,以获得更好的解决方案。
-
这是个坏主意,但您可以在文件顶部使用
using myIntType = System.Int16;(每个文件)... -
你可以排序使用
using MyList = System.Collections.Generic.List<short>;获得这个效果,但是这only引入了该类型的别名,所以它不会易于编写在所有情况下都能正常工作的代码。一般来说,您应该会发现这种切换根本没有回报——如果您的数据不需要int但可以容纳short,为什么不总是使用它呢?如果您的数据可能不适合short,为什么不总是使用int?最重要的是,您如何确定这甚至是内存使用的实际问题,值得解决?