C# 创建字节数组重构
我需要创建字节数组进行测试。我实现了自己的解决方案,但不确定它是否是最优的。这是:C# 创建字节数组重构,c#,.net,bytearray,C#,.net,Bytearray,我需要创建字节数组进行测试。我实现了自己的解决方案,但不确定它是否是最优的。这是: byte counter = 0; Func<int, byte[]> createByteArray = size => { var array = new byte[size]; for (int index = 0; index < size; index++) { array[index] = counter++; if (
byte counter = 0;
Func<int, byte[]> createByteArray = size =>
{
var array = new byte[size];
for (int index = 0; index < size; index++)
{
array[index] = counter++;
if (counter == byte.MaxValue)
{
counter = 0;
}
}
return array;
};
字节计数器=0;
Func createByteArray=大小=>
{
var数组=新字节[大小];
对于(int index=0;index
有什么方法可以简化它吗?因为它是用于测试的,所以可以使用
random.NextBytes(…)
创建一个完整的随机缓冲区
如果没有,则不需要分支:
Func<int, byte[]> createByteArray = size =>
{
var array = new byte[size];
for (int index = 0; index < size; index++)
{
array[index] = (byte)(index & 0xFF);
}
return array;
};
Func createByteArray=size=>
{
var数组=新字节[大小];
对于(int index=0;index
因为它是用于测试的,所以您可以使用random.NextBytes(…)
创建一个完整的随机缓冲区
如果没有,则不需要分支:
Func<int, byte[]> createByteArray = size =>
{
var array = new byte[size];
for (int index = 0; index < size; index++)
{
array[index] = (byte)(index & 0xFF);
}
return array;
};
Func createByteArray=size=>
{
var数组=新字节[大小];
对于(int index=0;index
我不确定这是否更好,但更短
Func<int, byte[]> createByteArray = size => Enumerable.Range(0, size)
.Select(i => (byte)(i % 256))
.ToArray();
Func createByteArray=size=>Enumerable.Range(0,size)
.选择(i=>(字节)(i%256))
.ToArray();
我不确定这是否更好,但更短
Func<int, byte[]> createByteArray = size => Enumerable.Range(0, size)
.Select(i => (byte)(i % 256))
.ToArray();
Func createByteArray=size=>Enumerable.Range(0,size)
.选择(i=>(字节)(i%256))
.ToArray();
你得到了C!用它
byte counter = 0;
Func<int, byte[]> createByteArray = size =>
{
var array = new byte[size];
for (int index = 0; index < size; index++)
{
unchecked
{
array[index] = counter++;
}
}
return array;
};
字节计数器=0;
Func createByteArray=大小=>
{
var数组=新字节[大小];
对于(int index=0;index
不知道你为什么把计数器放在外面。但是如果你喜欢这样
使用未选中的
块允许数字溢出。这将自动将您的值限制为字节范围内可能的值
我不知道你生成的阵列有多大。如果生成速度有问题,且阵列非常大,则只能手动填充值0至255,然后开始将卡盘复制到剩余阵列中。看看这个。但是,只有当数组生成太慢并且数组非常大(是字节范围的n倍)时,这才有意义。您得到了C#!用它
byte counter = 0;
Func<int, byte[]> createByteArray = size =>
{
var array = new byte[size];
for (int index = 0; index < size; index++)
{
unchecked
{
array[index] = counter++;
}
}
return array;
};
字节计数器=0;
Func createByteArray=大小=>
{
var数组=新字节[大小];
对于(int index=0;index
不知道你为什么把计数器放在外面。但是如果你喜欢这样
使用未选中的
块允许数字溢出。这将自动将您的值限制为字节范围内可能的值
我不知道你生成的阵列有多大。如果生成速度有问题,且阵列非常大,则只能手动填充值0至255,然后开始将卡盘复制到剩余阵列中。看看这个。但这仅在数组生成太慢且数组非常大(字节范围的n倍)时才相关。为什么要在函数外部声明计数器
?您是否知道变量闭包可能存在的问题?因此您希望创建一个大小为x的数组,并用递增的数字填充它?数组是否需要包含增量数字?@标记是,我想要一个包含增量数字的数组为什么要在函数外部声明计数器
?您是否知道变量闭包可能存在的问题?因此您希望创建一个大小为x的数组,并用递增的数字填充它?数组是否需要包含增量数字?@Mark yes,我想要一个包含增量数字的数组实际上是一个使用unchecked的智能解决方案,这是您有时会忘记的事情。我使用VB.net,所以我永远不会忘记这个函数。我嫉妒,因为我没有实际上,使用unchecked是一个聪明的解决方案,这是你有时会忘记的。我使用VB.net,所以我永远不会忘记这个函数。我嫉妒,因为我没有