相关疑难解决方法(0)

C#中的数组切片

你怎么做呢?给定一个字节数组:

byte[] foo = new byte[4096];
Run Code Online (Sandbox Code Playgroud)

如何将数组的前x个字节作为单独的数组?(具体来说,我需要它作为一个IEnumerable<byte>)

这是为了与Sockets合作.我认为最简单的方法是数组切片,类似于Perls语法:

@bar = @foo[0..40];
Run Code Online (Sandbox Code Playgroud)

这会将前41个元素返回到@bar数组中.C#中有些东西我只是缺少,还是还有其他一些我应该做的事情?

LINQ对我来说是一个选项(.NET 3.5),如果这有帮助的话.

c# arrays

214
推荐指数
15
解决办法
23万
查看次数

什么是"跨度",什么时候应该使用?

最近我有建议span<T>在我的代码中使用's,或者在网站上看到了一些使用span's - 应该是某种容器的答案.但是 - 我在C++标准库中找不到类似的东西.

那么这个神秘的是什么span<T>,以及为什么(或什么时候)使用它是一个好主意,如果它是非标准的?

c++ c++-faq cpp-core-guidelines c++20 std-span

202
推荐指数
3
解决办法
4万
查看次数

为什么C#8阵列切片功能的新hat-operator索引从0开始?

C#8.0引入了一种切片阵列的便捷方法 - 参见官方C#8.0博文.

访问数组的最后一个元素的语法是

int value[] = { 10, 11, 12, 13 };

int a = value[^1]; // 13
int b = value[^2]; // 12
Run Code Online (Sandbox Code Playgroud)

我想知道为什么向后访问元素的索引从1开始而不是0?这有技术原因吗?

c# arrays indexing c#-8.0

149
推荐指数
1
解决办法
6924
查看次数

C#数组切片没有副本

我想将一个C#数组的子集传递给一个方法.我不在乎该方法是否覆盖数据,因此希望避免创建副本.

有没有办法做到这一点?

谢谢.

c# arrays performance slice space-efficiency

8
推荐指数
2
解决办法
4671
查看次数