C#中的数组段

1.数组段说明
<1>.     结构ArraySegment<T>表示数组的一段。如果某方法应返回数组中的一部分,或者给
            某方法传递数组的一部分,就可以使用数组段。通过ArraySegment<T>可以传递三个参数
            (数组,数组段开始位置,从开始位置选择的元素个数),也可以只传递一个参数

<2>.    数组段不会复制原数组的元素,但原数组可以通过ArraySegment<T>中的Array属性访问,
            如果数组段中的元素改变了,则这些变化就会反映到原数组

 

2.一个例子

        private int SumOfSegments(ArraySegment<int>[] segments)
        {
            int sum = 0;
            foreach(ArraySegment<int> segment in segments)
            //循环存放数组段的数组
            {
                for (int i = segment.Offset; i < segment.Offset +
                                segment.Count; i++)
                //处理数组段,Offset为在元素数组中的起始位置
                //Count为要提取的个数
                //Arary为原始数组
                {
                    sum += segment.Array[i];
                    //计算元素之和
                }
            }
            return sum;
        }

        -----------调用------------------------

        private void button1_Click(object sender, EventArgs e)
        {
            int[] arr1 = new int[] { 1,4,5,11,14,18};
            int[] arr2 = new int[] {3,4,5,18,21,27,33 };
            //定义数组段的数组
            var segments = new ArraySegment<int>[2]
            {
                new ArraySegment<int>(arr1,0,3),
                new ArraySegment<int>(arr2,3,3)
            };
            var sum=SumOfSegments(segments);
            MessageBox.Show(sum.ToString());
        }

### 声明和初始化数组C#中,数组是一种存储相同类型元素的数据结构。声明和初始化数组的语法如下: ```csharp // 声明并初始化一个整数数组 int[] numbers = new int[5]; // 声明并初始化一个字符串数组 string[] names = new string[] { "John", "Jane", "Alice", "Bob" }; // 声明并初始化一个二维数组 int[,] matrix = new int[3, 3] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; ``` ### 访问数组元素 使用方括号 `[]` 和索引来访问数组元素。数组的索引从0开始,最大索引为数组长度减1。例如,`int firstNumber = numbers[0];` 将获数组 `numbers` 的第一个元素 [^3]。 ### 声明一维数组 声明一维数组的语法格式如下: ```csharp // 声明但不初始化 int[] myArray; ``` ### 交错数组 交错数组数组数组,每个子数组可以有不同的长度。创建交错数组的示例如下: ```csharp int[][] array02; array02 = new int[4][]; // 创建具有4个元素的交错数组 // 创建一维数组并赋值给交错数组的每个元素 array02[0] = new int[3]; array02[1] = new int[5]; array02[2] = new int[4]; array02[3] = new int[1]; // 赋值 array02[0][0] = 1; array02[1][2] = 2; array02[1][4] = 3; array02[2][1] = 4; array02[2][3] = 5; ``` ### 遍历交错数组 遍历交错数组可以使用 `foreach` 或 `for` 循环: ```csharp // 使用 foreach 遍历交错数组 foreach(int[] array in array02) { foreach(int element in array) { Console.WriteLine(element); } } // 使用 for 遍历交错数组 for(int r = 0; r < array02.Length; r++) { for(int c = 0; c < array02[r].Length; c++) { Console.Write(array02[r][c] + "\t"); } Console.WriteLine(); } ``` ### 参数数组 参数数组允许将不定数量的参数传递给方法。定义参数数组的方法如下: ```csharp public void PrintNumbers(params int[] numbers) { foreach(int number in numbers) { Console.WriteLine(number); } } ``` 调用方法时,可以传递任意数量的参数: ```csharp PrintNumbers(1, 2, 3, 4, 5); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值