![]() |
1
1
可以使用发射IL生成动态类型。关于这种技术的漂亮文章是关于codeproject的: http://www.codeproject.com/KB/cs/Creating_Dynamic_Types2.aspx |
![]() |
2
1
我不确定这些限制是否会使它不可用,但是您可以在C(不安全代码)中使用固定大小的缓冲区。见 the MSDN docs |
![]() |
3
1
这听起来像是使用C/C++联盟的东西。也就是说(如果我记得我的C):
它占用的内存与其中定义的最大类型相同。所以在这里我想它是8字节(对于双字节)。 如果您知道事物的类型,可以访问相应的字段:
你如何知道它的类型取决于你自己。
不管怎样,正如你现在可能知道的,在C中没有一个联合,但是你可以用
您可以创建数组或
顺便说一下,还有更有效的存储字符串的方法。存储它们的方式取决于您是否希望修改它们以及引用它们的速度,但是您可以轻松地节省.NET存储英语和大多数西欧语言字符串所需空间的近50%。 |
![]() |
4
0
使用
|
![]() |
5
0
你能用仿制药吗?我认为这是相当有效的。如:
这样做的好处是,如果存在与所讨论的字段相关的代码共性,那么它们可以进入非类型化专用字段,并且您可以得到一个结构良好的OO系统。 |
![]() |
6
0
我同意chaospandion:list>可能是.net中使用的最简单但高效的构造。单个列表可以保存约20亿条记录(int.maxvalue)或2GB(32位.NET中单个对象的最大数据大小)。由于记录本身是对其他对象的引用,所以每个元素都是一个4(或8)字节的intptr,使外部列表的最大大小约为5亿个元素(它在引擎盖下使用了一个数组)。对于大多数记录来说,内部列表都是一个简单的步骤,除非其中一个字段是斑点状的。 如果你告诉我们这些数据是如何进入系统的,一个更好的答案会更容易给出。是从档案里找来的吗?数据库?外部外围设备的数据流,如气象站? 说真的,我只想让托管运行时完成它的工作。甚至.NET中的数组在索引零点之前都有一些开销,不同于非托管C/C++,其中数组只是块O内存,其中数组[0 ]=&数组。在64位体系结构中,要处理您所谈论的内存类型(在32位体系结构中,整个进程的内存使用量必须小于2GB,包括clr、程序集、调用堆栈、对象开销和实际数据),而在64位体系结构中,内存受RAM和页面文件空间的限制;能力系统对内存的寻址比当前硬件大几个数量级。即使增加了托管对象的开销,也应该有足够的空间。 |
![]() |
Emopusta · 从后端到前端的图像路径不工作 2 年前 |
![]() |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
![]() |
Niyazi Babayev · 如何在表达式中动态应用表达式? 2 年前 |
|
Dansih · .Net核心自定义身份验证方案 2 年前 |
![]() |
lolorekkk · 面板插入。NET WinForm 2 年前 |