C# 如何创建具有n个字节数的数组?

C# 如何创建具有n个字节数的数组?,c#,arrays,byte,enumerable,C#,Arrays,Byte,Enumerable,如何创建字节[]位有n个字节 我知道我可以做Enumerable.Range(1,n).ToArray()但这会创建一个int[]。有没有办法创建一个字节[] 我的首要任务是快速表演。记住这一点,有没有一种更快的方法(代码稍微多一点)可以创建这个呢?仅仅创建一个字节数组实例有什么不对 byte[] digits = new byte[n]; 如果你想用1到n的值初始化,我想: for(int i = 1; i <= n; i++) digits[i-1] = (byte)i; //

如何创建
字节[]位有n个字节

我知道我可以做
Enumerable.Range(1,n).ToArray()但这会创建一个int[]。有没有办法创建一个字节[]


我的首要任务是快速表演。记住这一点,有没有一种更快的方法(代码稍微多一点)可以创建这个呢?

仅仅创建一个字节数组实例有什么不对

byte[] digits = new byte[n];
如果你想用1到n的值初始化,我想:

for(int i = 1; i <= n; i++)
   digits[i-1] = (byte)i; // index is 0-based

for(inti=1;i仅仅创建字节数组实例有什么不对

byte[] digits = new byte[n];
如果你想用1到n的值初始化,我想:

for(int i = 1; i <= n; i++)
   digits[i-1] = (byte)i; // index is 0-based

for(int i=1;i您可以执行以下操作:

byte[] digits=new byte[2024];

您可以这样做:

byte[] digits=new byte[2024];

要创建一个字节数组并用字节1到n填充它,只需创建数组并使用循环:

byte[] digits = new byte[n];
for (int i = 0; i < n; i++)
{
    digits[i] = (byte) (i + 1);
}
byte[]位=新字节[n];
对于(int i=0;i
请注意,
数字[0]
将是1等等……这就是您想要的吗


但是,如果将这些值存储为字节纯粹是为了性能,那么您可能是在进行微优化。您的性能目标是什么?如果使用
int[]
相反,这是否遗漏了它们?此数据的自然类型是什么?您使用它的目的是什么?

要创建字节数组并用字节1到n填充它,您只需创建数组并使用循环:

byte[] digits = new byte[n];
for (int i = 0; i < n; i++)
{
    digits[i] = (byte) (i + 1);
}
byte[]位=新字节[n];
对于(int i=0;i
请注意,
数字[0]
将是1等等……这就是您想要的吗


但是,如果将这些值存储为字节纯粹是为了性能,那么您可能是在进行微优化。您的性能目标是什么?如果您使用
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[]位=新字节[n];

对于(字节b=1;b如果你真的喜欢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[]位=新字节[n];


对于(字节b=1;b好吧,看起来我是当今世界上最愚蠢的人。谢谢你,先生。没有必要感到愚蠢。有时候最明显的事情我们都逃避了!好吧,我甚至更愚蠢。我的意思是,我如何用数字填充数组。范围从1->n?@user1933169,所以你不是有意将数组元素初始化为
1,2,3,4,…
?它不会在
i==n
上失败,因为赋值是给
数字[i-1]
。不过看起来确实有点吓人。我的首选是
数字[i]=(字节)i+1;
和通常的
i
for
循环测试中,但可能那只是我。好吧,看起来我是当今世界上最愚蠢的人。谢谢你,先生,没有必要感到愚蠢。有时最明显的事情我们逃避了!好吧,我甚至比那更愚蠢。我的意思是,我如何用数字填充数组。from 1->n?@user1933169所以你不是有意将数组元素初始化为
1,2,3,4,
?它不会在
i==n
上失败,因为赋值是
数字[i-1]
。不过看起来确实有点可怕。我的首选是
数字[i]=(字节)i+1;
并在
for
循环测试中使用通常的
i
,但可能只有我一个人。为什么您认为字节[]在32位机器上比int[]性能更好?我不相信,字节只够存储我想存储的数字:)我认为它不会影响性能。@jonsket No,
Enumerable.Range(1,n)
产生
n
元素。@JeppeStigNielsen:Doh,Doh,Doh。我很愚蠢。删除注释。@user1933169:完全有可能使用
字节
数组实际上会比使用
int
数组慢,这取决于你对它的操作。听起来你在进行大量的微优化-你有证据证明吗这部分代码实际上是一个瓶颈?为什么您认为字节[]在32位机器上比int[]性能更好?我不相信,字节只够存储我要存储的数字:)我认为它不会影响性能。@JonSkeet No,
Enumerable.Range(1,n)
产生
n
元素。@JeppeStigNielsen:Doh,Doh,Doh。我很愚蠢。删除注释。@user1933169:完全有可能使用
字节
数组实际上会比使用
int
数组慢,这取决于你对它的操作。听起来你在进行大量的微优化-你有证据证明吗这部分代码实际上是一个瓶颈?必须同意w/@Jon关于微优化的可能性。除非出于某种原因它们必须是8位值(技术上是字符位值),你可能想看看
intfast\u t
之类的东西。至于性能,请注意
uint\u fast8\u t
的一个典型定义是
typedef unsigned int
@frasnian:我想你可能错过了这里的C上下文…在这种情况下没有intfast\t等。啊,谢谢。我完全错过了。这就是为什么周六的rly会让你:)必须同意w/@Jon关于微优化的可能性。除非出于某种原因它们必须是8位值(好的,技术上是字符位值),你可能想看看
intfast\u t
之类的东西。至于性能,请注意
uint\u fast8\u t
的一个典型定义是
typedef unsigned int
@frasnian:我想你可能错过了这里的C上下文…在这种情况下没有intfast\t等。啊,谢谢。我完全错过了。这就是为什么周六的狂欢会让你:)