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,所以我永远不会忘记这个函数。我嫉妒,因为我没有