C#数组复制操作
2016-04-03 17:54
531 查看
这玩意真是难受,随便搞一下就云里雾里的……
本来系统里是有个Array.CopyTo方法的,但我不喜欢用,不合我的要求。
于是我就自己写,写着写着就绕里面了,这会儿刚绕出来,赶紧记一下。
(很杀笔的注释往往有奇效
)
我觉得应该是原创,毕竟这么简单的东西……
第二个拓展方法和.Net里的重复了,改成这样:
本来系统里是有个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); } }
相关文章推荐
- C#实现把指定文件夹下的所有文件复制到指定路径下以及修改指定文件的后缀名
- C# : 读取XML文件 (二)
- Notepad++简单配置c#开发
- LeetCode #1 Two Sum C# Solution
- C# : 读取XML文件 (一)
- C# : 读取简单的XML文件
- C# TextBox常用方法总结
- C#、.Net代码精简优化(空操作符(??)、as、string.IsNullOrEmpty() 、 string.IsNullOrWhiteSpace()、string.Equals()、System.IO.Path 的用法)
- BC#78 (div.2)CA Loves GCD【N个数gcd】
- BC#78 (div.2) 1001 CA Loves Stick 【注意取值范围】
- C#中泛型容器Stack<T>
- C#套接字和windowsAPI套接字
- C#套接字和windowsAPI套接字
- C# LDAP 管理(创建新用户)
- C# AD(Active Directory)域信息同步,组织单位、用户等信息查询
- C#-变量类型(值类型、引用类型)
- C# 服务器、客户端学习(四)
- C# 服务器、客户端学习(三)
- C# 服务器、客户端学习(二)
- C# 客户端服务器学习(一)