C# 通过发送元素C访问方法中的数组#

C# 通过发送元素C访问方法中的数组#,c#,arrays,C#,Arrays,我想通过声明一个方法将我的普通数组变成一个圆形数组 例如,这可以是我的字符数组: char[] c = Console.ReadLine().ToCharArray(); 我想声明我可以这样使用的e方法: char c1=c[3].nextItem(); 如果数组长度大于4,则返回c[4] 其他的 它返回c[0] 有没有什么方法可以在不向方法发送整个数组的情况下声明nextItem()之类的方法?类似于: char c1 = (index < c.Length - 1) ? c[ind

我想通过声明一个方法将我的普通数组变成一个圆形数组 例如,这可以是我的字符数组:

char[] c = Console.ReadLine().ToCharArray();
我想声明我可以这样使用的e方法:

char c1=c[3].nextItem();
如果数组长度大于4,则返回c[4] 其他的 它返回c[0] 有没有什么方法可以在不向方法发送整个数组的情况下声明nextItem()之类的方法?

类似于:

char c1 = (index < c.Length - 1) ? c[index].nextItem() : c[0];
charc1=(索引
如果需要方法,只需返回索引即可:

char c1 = c[CheckIndex(index, c.Length())];    

public static int CheckIndex(int index, int length)
{
    return index < length - 1 ? index : 0;
}
charc1=c[CheckIndex(index,c.Length())];
公共静态int-CheckIndex(int-index,int-length)
{
返回指数<长度-1?指数:0;
}

如果使用,
char c1=c[3].nextItem()
,该方法从
字符开始,而不是从数组开始,并且您不了解数组

为数组
char
创建自定义方法的建议:

public static class MyExtensions
    {
        public static char nextItem(this char[] chars, int index)
        {
            //index start from 0
            // my array length was bigger than 4 it returns c[4]
            if(chars.length() > index+1) 
              return chars[index+1];
            else
              //it returns c[0]
              return chars.Length() > 0 ? chars[0] : '';
        }
    }   
电话:

char[] c = Console.ReadLine().ToCharArray();
var singleChar = c.nextItem(3);

目前,您的方法将
char
作为参数(假设它是一个扩展方法),因此实际上它不知道是否存在数组。因此,不,在某个时刻,整个数组必须传递给助手方法。也许问题是,为什么传递整个过程是一个问题?如果你创建了一个方法-整个数组不会被发送到该方法,只是对数组的引用-因此传递单个元素数组与传递1000000元素数组没有任何区别。扩展方法可以接受吗?谢谢,但我希望有一个方法可以为我这样做,如果我将该数组的元素发送到该方法,我无法访问数组。我想OP想要的是用于nextItem()的方法方法增加索引和换行,如果长度超过数组的长度。@Fake使用方法更新了它。您还必须传递数组长度。希望有帮助!这样就可以接收完整的阵列。