一般学过C#的都知道,Array 一旦定义好,比如四个长度,当需要再往里面添加元素的时候,需要Array.Resize一下才可以。有鉴于此,为了提高代码复用,所以索性封装下,方便使用。
具体实现代码如下:
/// <summary> /// Array添加 /// </summary> /// <typeparam name="T">泛型</typeparam> /// <param name="array">Array</param> /// <param name="item">需要添加项</param> /// <returns>返回新的Array</returns> public static T[] Add<T>(this T[] array, T item) { int _count = array.Length; Array.Resize<T>(ref array, _count + 1); array[_count] = item; return array; } /// <summary> /// Array添加 /// </summary> /// <typeparam name="T">泛型</typeparam> /// <param name="sourceArray">Array</param> /// <param name="addArray">Array</param> /// <returns>返回新的Array</returns> public static T[] AddRange<T>(this T[] sourceArray, T[] addArray) { int _count = sourceArray.Length; int _addCount = addArray.Length; Array.Resize<T>(ref sourceArray, _count + _addCount); //foreach (T t in addArray) //{ // sourceArray[_count] = t; // _count++; //} addArray.CopyTo(sourceArray, _count); return sourceArray; }
测试代码:
[TestMethod()] public void AddTest() { int[] _source = new int[3] { 1, 2, 3 }; int[] _expected = new int[4] { 1, 2, 3, 4 }; _source = _source.Add(4); CollectionAssert.AreEqual(_source, _expected); } [TestMethod()] public void AddRangeTest() { int[] _source = new int[3] { 1, 2, 3 }; int[] _expected = new int[6] { 1, 2, 3, 4, 5, 6 }; _source = _source.AddRange(new int[3] { 4, 5, 6 }); CollectionAssert.AreEqual(_source, _expected); }
测试结果:
代码逻辑很简单,无需说明,只是方面后续使用而已,这是基于.NET 2.0的写法,大家都知道,在.NET 3.0+有了LINQ出现,实现此效果更为简单方面,代码如下:
/// <summary> /// Array添加 /// </summary> /// <typeparam name="T">泛型</typeparam> /// <param name="array">Array</param> /// <param name="item">需要添加项</param> /// <returns>返回新的Array</returns> public static T[] Add<T>(this T[] array, T item) { array = array.Concat <T>(new T[1] { item }).ToArray(); return array; } /// <summary> /// Array添加 /// </summary> /// <typeparam name="T">泛型</typeparam> /// <param name="sourceArray">Array</param> /// <param name="addArray">Array</param> /// <returns>返回新的Array</returns> public static T[] AddRange<T>(this T[] sourceArray, T[] addArray) { sourceArray = sourceArray.Concat <T>(addArray).ToArray(); return sourceArray; }
同样的测试代码:
[TestMethod()] public void AddTest() { int[] _source = new int[3] { 1, 2, 3 }; int[] _expected = new int[4] { 1, 2, 3, 4 }; _source = _source.Add(4); CollectionAssert.AreEqual(_source, _expected); } [TestMethod()] public void AddRangeTest() { int[] _source = new int[3] { 1, 2, 3 }; int[] _expected = new int[6] { 1, 2, 3, 4, 5, 6 }; _source = _source.AddRange(new int[3] { 4, 5, 6 }); CollectionAssert.AreEqual(_source, _expected); }
测试结果:
希望本文能对大家有所帮助!
本文向大家介绍PyTorch中的C++扩展实现,包括了PyTorch中的C++扩展实现的使用技巧和注意事项,需要的朋友参考一下 今天要聊聊用 PyTorch 进行 C++ 扩展。 在正式开始前,我们需要了解 PyTorch 如何自定义module。这其中,最常见的就是在 python 中继承torch.nn.Module,用 PyTorch 中已有的 operator 来组装成自己的模块。这种方式
SPI 扩展接口仅用于系统集成,或 Contributor 扩展功能插件。
本文向大家介绍Ruby使用C++扩展实例(含C++扩展代码示例),包括了Ruby使用C++扩展实例(含C++扩展代码示例)的使用技巧和注意事项,需要的朋友参考一下 早年写过用C++ + SWIG写Ruby插件的文,但实际中还是以原生C++写Ruby扩展,因为也相当简单。但长久没用还是会忘记,不得不翻以前的老代码回忆,写下这篇博文,若下次再忘记,也不至于去翻仓库。 建立 extconf.rb 建立
问题内容: 我有2个Maven项目在他们各自的POM中共享一个JPA项目作为依赖项。JPA项目在2.1版上,并且成功实现了hibernateenvers。但是,我现在需要创建一个自定义的RevisionEntity,因为我需要审核其他属性,例如登录的用户ID。问题是: 一世。我不能在JPA项目中直接实现 ii。父maven项目的检索登录用户的实现不同。 真正的挑战实际上是实现RevisionLis
问题内容: 我不明白为什么要编译。我以为它检查了但没有检查? 问题答案: 泛型中的关键字在语义上与常规关键字略有不同。 当使用在泛型的上下文中,例如,这意味着,应该是一个类型的 任一 实现的接口(在情况下,当是接口), 或者 是子类(如果是一个类)。 可能的原因是,如果Generics中支持该关键字,则会使类型参数声明过于冗长。 例如,您将拥有: 相反,此方法的有效语法为: 实际上,您不需要关键字
本文向大家介绍ES6 Array常用扩展的应用实例分析,包括了ES6 Array常用扩展的应用实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了ES6 Array常用扩展的应用。分享给大家供大家参考,具体如下: 在ES6中又对Array扩展了不少方法,下面我们来看下 from方法 将伪数组转换为数组 通过第二个回调参数对值进行再加工处理 可转换实现了interator接口的类型如:s