0

.NET 中是否有新的展示位置(如 C++)?

换句话说,如果我在 VB.NET 中分配一些内存


Dim Foo(64) as Byte

我想在 Foo 内存中实例 BarClass (类似于...)


Dim Bar as New BarClass(Foo)

但是,我没有看到任何语法可以做到这一点。

相反,我必须做类似的事情:


Dim Foo(1) as BarClass
Foo(0) = new BarClass(x, y, z)
Foo(1) = new BarClass(x, y, z)
4

3 回答 3

2

不,.NET 中没有等价物。

此外,GC 可以随时在内存中随意移动您的对象(前提是它没有被固定到某个位置)。大多数 .NET 代码中通常会避免这种行为。

您可以通过使用本机代码和互操作来解决此问题。

于 2009-07-22T00:05:47.153 回答
0

看看LayoutKind。设置为显式将为您提供类似 c++ 联合的行为。

于 2009-07-22T00:06:08.620 回答
0

在 C++ 中使用布局的原因是,当您请求 64 字节的内存时,操作系统实际上给了您 64 字节的内存。因此,如果您需要一次创建一堆对象,那么预先分配一个更大的内存块并使用该块的一部分创建每个新对象会更有效。

在 C# 等托管语言中,这已经为您完成了。当您请求 64 字节的内存时,框架会分配整个块并从该块(或另一个先前分配的块)中为您提供 64 个字节。

于 2009-07-22T00:22:46.800 回答