您的位置:首页 > 编程语言 > C#

C#数组复制操作

2016-04-03 17:54 531 查看
这玩意真是难受,随便搞一下就云里雾里的……

本来系统里是有个Array.CopyTo方法的,但我不喜欢用,不合我的要求。

于是我就自己写,写着写着就绕里面了,这会儿刚绕出来,赶紧记一下。

(很杀笔的注释往往有奇效



public static class HenShaBiDeArrayCopyTool
{
/// <summary>
/// 小数组放进大数组里,从大数组的指定位置开始放小数组,小数组是从第0个开始取的。
/// 如果小数组没取完大数组到头了就不要再放了
/// </summary>
/// <param name="small">小数组</param>
/// <param name="large">大数组</param>
/// <param name="index">从大数组的指定位置开始放小数组的那个指定位置</param>
public static void WriteTo(this byte[] small, byte[] large, long index)
{
if (index >= large.LongLength)
{
throw new ArgumentOutOfRangeException("index out of large range");
}
long slen = small.LongLength;
long llen = large.LongLength;
for (long i = index, j = 0; i < llen && j < slen; i++, j++)
{
large[i] = small[j];
}
}

/// <summary>
/// 大数组放进小数组里,从大数组的指定位置开始取数据放到小数组里,小数组是从第0个开始放大数组的。
/// 如果大数组到头了就不要再取了,如果小数组到头了就不要再放了
/// </summary>
/// <param name="large">大数组</param>
/// <param name="small">小数组</param>
/// <param name="index">从大数组的指定位置开始取数据放到小数组里的那个指定位置</param>
public static void CopyTo(this byte[] large, byte[] small, long index)
{
if (index >= large.LongLength)
{
throw new ArgumentOutOfRangeException("index out of large range");
}
long slen = small.LongLength;
long llen = large.LongLength;
for (long i = index, j = 0; i < llen && j < slen; i++, j++)
{
small[j] = large[i];
}
}
}


我觉得应该是原创,毕竟这么简单的东西……

第二个拓展方法和.Net里的重复了,改成这样:

/// <summary>
/// 大数组放进小数组里,从大数组的指定位置开始取数据放到小数组里,小数组是从第0个开始放大数组的。
/// 如果大数组到头了就不要再取了,如果小数组到头了就不要再放了
/// </summary>
/// <param name="small">小数组</param>
/// <param name="large">大数组</param>
/// <param name="index">从大数组的指定位置开始取数据放到小数组里的那个指定位置</param>
public static void CopyFrom(this Array small, Array large, long index)
{
if (index >= large.LongLength)
{
throw new ArgumentOutOfRangeException("index out of large range");
}
long slen = small.LongLength;
long llen = large.LongLength;
for (long i = index, j = 0; i < llen && j < slen; i++, j++)
{
object largedata = large.GetValue(i);
small.SetValue(largedata, j);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: