IT学习联盟

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
IT学习联盟 门户 文章 ASP.NET/C# 查看内容

C#中的数组段

2012-8-18 03:06| 发布者: admin| 查看: 607| 评论: 0

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 };
            //定义数组段的数组www.2cto.com
            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());
        }


Archiver|IT学习联盟| 网站地图

Powered by Discuz! X2.5© 2001-2010 世界学习室 大伟制作

GMT+8, 2018-5-23 20:33 , Processed in 0.096617 second(s), 12 queries .