是否有可能实现[]自己并在C#中使用它?

时间:2014-12-19 23:53:57

标签: c# memory-management

为了加深我的知识,我开始尝试从IEnumerable创建我自己的List类。

查看List实现,我发现它正在使用T [],我希望能够实现我自己的" []"版本,它会找到可用的内存,通过在类上添加属性的大小,即2个int属性(32 + 32位)来查看我的对象占用多少空间,并将此对象分配给内存,并为其他值提供额外的空间,例如指针的空间内存中下一个项目的下一个位置..

这可能在C#中使用,还是使用非托管代码并创建一个包装类来在C#中使用它?这就是" []"正在做什么?..我在网上搜索手动实现[]并找不到任何好的资源,也无法浏览到定义..我添加了c和c ++标签,因为它可能用这些语言创建解决方案并导入dll以便在C#中使用..我如何实现此功能并在C#中使用它?

更新

问题集中在C#中可用于实现更低级别功能的选项,例如将对象手动放入内存并从内存中删除它们。例如,不使用" []"在C#中给出的属性,但我自己创建了这个功能..(看看List的实现以及它如何使用[])..我想知道这是因为我正在探索低级别C#如何让我们去访问内存等。我们有什么选择可以做到这一点,我已经看到有windows api(Win32 API' s)可能这是如何实现这个功能,或者这个功能可以在非托管中实现语言和使用dllimport导入,对建议的方法或进一步的资源的任何建议将不胜感激?

1 个答案:

答案 0 :(得分:1)

.NET中有一些方法可以动态分配内存并填充内存。例如,您可以使用Marshal.AllocHGlobal()来分配非托管内存,然后您可以按照自己喜欢的方式填充内存。您需要小心在托管和非托管环境之间工作。