我试图弄清楚是否有一种方法可以在C#中完成某些操作,这在C++中很容易实现。特别是,如果我有一个数据数组,我可以创建一个指向该数据的指针以更方便地访问子部分。访问数组子集的方法?
举例来说,如果我有:
unsigned char buffer[1000];
,我确定有一个在该阵列内的位置102至110串,我需要处理很多,我可以这样做:
unsigned char *strPtr = &buffer[102];
char firstChar = strPtr[0];
这使我无需在后续操作中为每个数组索引添加“102”。
虽然我认识到当你做这样的事情时出现不安全情况的可能性,但我想知道在C#中是否存在一个道德等价物,它可以让我创建一个新的对现有数组子集的引用。
喜欢的东西:
byte [8] newArray = &buffer[102];
这个例子实际上并没有工作或我不会张贴这一点,但我认为它得到了什么我要完成整个想法。
你想要它是一个副本或直接修改原始数组吗? – BalinKingOfMoria
我真的不会写回来,只是从中读取。我想避免复制数据。事实上,我不会问复制数据是不是跳闸点。 –
如果你关心的只是从数据中读取,为什么不保留一个'int offset = 102;缓冲区[offset + i] ...'?这意味着你不需要不安全的代码来完成任务。 'ArraySegment'绝对是一种更干净的方法。如果您真的想要避免偏移计算出于某种原因,那么您必须使用不安全的代码。 –