如何byte[] digits;
用 n 个字节创建?
我知道我可以做到Enumerable.Range(1, n).ToArray();
,但这会创建一个 int[]。有没有办法创建一个字节[]?
我的首要任务是快速的表现。牢记这一点,是否有更快的方法(代码稍多)可以创建它?
如何byte[] digits;
用 n 个字节创建?
我知道我可以做到Enumerable.Range(1, n).ToArray();
,但这会创建一个 int[]。有没有办法创建一个字节[]?
我的首要任务是快速的表现。牢记这一点,是否有更快的方法(代码稍多)可以创建它?
如果你真的喜欢 LINQ,你可以这样做
byte[] digits = Enumerable.Range(1, n).Select(i => (byte)i).ToArray();
还有可能
byte[] digits = new byte[n];
for (byte b = 1; b <= n; ++b)
digits[b - 1] = b;
只创建一个字节数组实例有什么问题?
byte[] digits = new byte[n];
如果您想使用从 1 到 n 的值进行初始化,那么我认为:
for(int i = 1; i <= n; i++)
digits[i-1] = (byte)i; // index is 0-based
还将尽快为您提供所需的结果。当然,其中 n < 256!
要创建一个字节数组并用字节 1 到 n 填充它,您只需创建数组并使用循环:
byte[] digits = new byte[n];
for (int i = 0; i < n; i++)
{
digits[i] = (byte) (i + 1);
}
请注意,thendigits[0]
将是 1 等...这是您想要的吗?
但是,如果您将这些值存储为字节的原因纯粹是为了性能,那么您可能正在进行微优化。你的绩效目标是什么?如果您使用 anint[]
代替,那会错过它们吗?该数据的自然类型是什么?你用它做什么?
你可以这样做:
byte[] digits=new byte[2024];