c# - C# 中的固定语句

标签 c# .net memory-management garbage-collection unsafe

我们的一个项目中有与以下类似的代码。谁能解释(用简单的英语)为什么这里需要 fixed 语句?

class TestClass
{
    int iMyVariable;
    static void Main()
    {
        TestClass oTestClass = new TestClass();
        unsafe
        {
            fixed (int* p = &oTestClasst.iMyVariable)
            {
                *p = 9;
            }
        }
    }
}

最佳答案

它修复了内存中的指针。垃圾收集语言可以自由地在内存中移动对象以提高效率。这对程序员来说都是透明的,因为他们并不真正在“普通”CLR 代码中使用指针。但是,当您确实需要指针时,如果您想使用它们,则需要将其固定在内存中。

关于c# - C# 中的固定语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/153376/

相关文章:

c# - 侧面加载的 Windows 8 应用程序 - 代理 Windows 运行时组件与 WCF 服务。

c# - 无法从 C# 代码访问 XAML 元素

c# - 展开结果 View 将枚举 IEnumerable

c# - 在 Entity Framework Core 中添加实体图

c# - 使用参数安全调用多次调用泛型方法(运行时返回类型)的最佳方法

.net - NET 4.0 在 COM+ 中安装程序集加载额外的依赖项

.net - 为什么有些控件同时具有 BackgroundImage 和 Image 属性?

python - 在 Windows 中增加 python 的可用内存

c++ - 为对象矩阵分配新内存

c - 包含结构的结构与包含指针的结构