C# 如何指定数组的边界

C# 如何指定数组的边界,c#,arrays,bounds,C#,Arrays,Bounds,在这里,我尝试指定数组的边界: public string[] scaleChanged() { int j =0; for(int i=0;i<42;i++) { if(MinScale == ItemScale[i]) //MinScale is the min value I want to use to start array { ItemsScale[j] = MinScale; //ItemScal

在这里,我尝试指定数组的边界:

public string[] scaleChanged()
{
    int j =0;
    for(int i=0;i<42;i++)
    {
        if(MinScale == ItemScale[i]) //MinScale is the min value I want to use to start array
        {
            ItemsScale[j] = MinScale; //ItemScal is an array of 42 string
            for(int h =0; h<42-i; h++)
            {
                ItemScale[j+1] = ItemScale[i];
                j++;
                if(ItemScale[j] == MaxScale) //MaxScale is my max value I want to use for stop my array
                {
                    return ItemScale[ ???MinScale to MaxScale];
                }
            }
        }
    }
}
因此,我从服务器恢复2值,该值允许我指定数组的边界


因此,我尝试用这两个值定义一个新数组作为边界。我确定这两个值总是在我的ItemScale数组中的任何位置声明,这就是我使用Comparison的原因。

如果真的取决于您在这里尝试做什么。数组的边界在创建时是固定的,如果向量字符串[]是向量,则它总是以零为基础。如果需要实际数组,则需要将子范围复制到第二个数组中—只需重新创建正确大小的数组和数组。复制所需的元素范围—即array.Copysource、startIndex、destination、0、count;。但是,有一些方法可以在不复制的情况下表示范围:

如果接收者只需要迭代数据而不是通过索引访问数据,则需要一个IEnumerable,即返回source.SkipfirstIndex.Takecount; Span或ReadOnlySpan,即返回新的Spansource、firstIndex、count-Span的工作原理与数组非常相似,不需要任何复制,并且无需分配;适当应用偏移量等;请注意,一旦有了跨度,.Slice。。。在该跨度内创建越来越小的子截面,同样不进行任何复制或分配 这里有一件很好的事情,您可以使用span方法作为一种更简单的方法来处理创建新数组的问题,如果您愿意的话-一旦您有了[ReadOnly]span,您就可以使用.ToArray来创建包含这些内容的新数组 内存或ReadOnlyMemory是有效的,我可以在您需要的时候给您一个span—因为您不能将span存储为字段—它只在堆栈上合法,但您可以存储内存 ArraySegment是一个古老的隐喻,用于表示带有偏移量和计数的数组;它依赖于调用方正确地执行所有操作
这取决于你在这里想做什么。数组的边界在创建时是固定的,如果向量字符串[]是向量,则它总是以零为基础。如果需要实际数组,则需要将子范围复制到第二个数组中—只需重新创建正确大小的数组和数组。复制所需的元素范围—即array.Copysource、startIndex、destination、0、count;。但是,有一些方法可以在不复制的情况下表示范围:

如果接收者只需要迭代数据而不是通过索引访问数据,则需要一个IEnumerable,即返回source.SkipfirstIndex.Takecount; Span或ReadOnlySpan,即返回新的Spansource、firstIndex、count-Span的工作原理与数组非常相似,不需要任何复制,并且无需分配;适当应用偏移量等;请注意,一旦有了跨度,.Slice。。。在该跨度内创建越来越小的子截面,同样不进行任何复制或分配 这里有一件很好的事情,您可以使用span方法作为一种更简单的方法来处理创建新数组的问题,如果您愿意的话-一旦您有了[ReadOnly]span,您就可以使用.ToArray来创建包含这些内容的新数组 内存或ReadOnlyMemory是有效的,我可以在您需要的时候给您一个span—因为您不能将span存储为字段—它只在堆栈上合法,但您可以存储内存 ArraySegment是一个古老的隐喻,用于表示带有偏移量和计数的数组;它依赖于调用方正确地执行所有操作
您是在问如何获取数组的子集吗?看看吧。如果您只是试图创建一个具有任意上下限的数组,那么这是不可能的。您只能定义数组的长度,下限始终为0。@John-我相信他们在问如何设置数组的范围,例如编号从x开始,一直到y。您可以使用数组和偏移量创建自己的类型。C没有这种功能。数组具有长度,并且以零为基。您可以编写一个类来实现它,但对于基本的语法糖分来说,这需要一点努力。@John好的,所以解决方案是确定MinScale和MaxScale之间的值的数量。根据这个长度,我可以确定我的新数组。你是在问如何获得数组的子集吗?看看吧。如果您只是试图创建一个具有任意上下限的数组,那么这是不可能的。您只能定义数组的长度,下限始终为0。@John-我相信他们在问如何设置数组的范围,例如编号从x开始,一直到y。您可以使用数组和偏移量创建自己的类型。C没有这种功能。数组具有长度,并且以零为基。您可以编写一个类来实现它,但对于基本的语法糖分来说,这需要一点努力。@John好的,所以解决方案是确定MinScale和MaxScale之间的值的数量。通过这个长度,我可以确定我的新数组。