⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

托管指针算术:ref 参数的偏移与迭代

使用 ref 进行安全指针运算,构造通用多维跨度访问器 · 难度:入门 · +10XP

托管指针算术:ref 参数的偏移与迭代

ref 在 C# 中不仅是别名,还可以通过 Unsafe.Add 进行算术操作。本教程构建一个 MultiSpan 类型,使用 ref 字段存储起始引用,通过计算元素大小偏移访问二维数据,无需 unsafe 指针。你会学到 ref 字段的局限(不能指向栈变量?实际 C# 11 允许 ref 字段指向堆对象和栈引用),如何用 System.Runtime.CompilerServices.Unsafe 系列方法实现 +、- 和比较。最后模拟 C++ 迭代器模式,在 foreach 中安全前移。

public ref struct RowAccessor<T>
{
    private ref T _ref;
    public RowAccessor(ref T start) => _ref = ref start;
    public ref T this[int index] => ref Unsafe.Add(ref _ref, index);
}

int[] arr = { 10, 20, 30 }; var row = new RowAccessor<int>(ref arr[0]); row[2] = 99; // 修改 arr[2]

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 148 篇
0 完成
🔥 0