首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C#数组移动项(非ArrayList/Generic List)

在C#中,数组是一种固定大小的数据结构,用于存储相同类型的元素。要移动数组中的项,可以使用以下方法:

  1. 使用Array.Copy方法:
代码语言:csharp
复制
int[] array = { 1, 2, 3, 4, 5 };
int indexToMove = 1;
int newIndex = 3;

Array.Copy(array, indexToMove, array, newIndex, 1);
  1. 使用Buffer.BlockCopy方法:
代码语言:csharp
复制
int[] array = { 1, 2, 3, 4, 5 };
int indexToMove = 1;
int newIndex = 3;

Buffer.BlockCopy(array, indexToMove * sizeof(int), array, newIndex * sizeof(int), sizeof(int));
  1. 使用for循环:
代码语言:csharp
复制
int[] array = { 1, 2, 3, 4, 5 };
int indexToMove = 1;
int newIndex = 3;

for (int i = indexToMove; i < newIndex; i++)
{
    array[i] = array[i + 1];
}

在这些方法中,可以根据具体需求选择合适的方法来移动数组中的项。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C#数组ArrayListList的区别

C#中,数组ArrayListList都能够存储一组对象,那么他们的区别是什么呢? Array 数组在内存中是连续存储的,所以它的索引速度非常快,而且赋值和修改元素也很简单。...这样就避免了前面讲的类型安全问题与装箱拆箱的性能问题了 版本 Array和ArrayListC# 1语法,ListC# 2的重要改变。...2.0 VS.NET 2005 总结 相较于数组ArrayListList十分灵活,可以自动扩容、轻松插入新元素,此外,由于继承了IList,后者在检索数据十分强大 数组可以具有多个维度,而ArrayList...但是,您可以轻松创建数组列表或列表的列表。特定类型(Object除外)的数组的性能优于ArrayList的性能。...不过,在不需要重新分配时(即最初的容量十分接近列表的最大容量),List的性能与同类型的数组十分相近 在决定使用List还是使用ArrayList类(两者具有类似的功能)时,记住List<T

18230

泛型

不过,这4用途足以表明泛型特性已经深入C#开发人员的日常工作中了。以集合为例来展现泛型的诸多优势,可谓再合适不过了。可以通过对比.NET 1中的普通集合和.NET 2中的泛型集合来充分体会。...我认为,数组协变机制是C#早期的一处设计失误。有关数组协变的内容超出了本书范畴,暂不讨论。...比如前面提到C# 2中的泛型接口IEnumerable,它和.NET 1.0中的泛型接口IEnumerable就属于不同类型。...) = System.Collections.Generic.List`1[System.String] typeof(T) = System.Int32 typeof(List) = System.Collections.Generic.List...泛型是C# 2截至目前最庞大的一个特性了,也是对C# 1的一重大改进。下面介绍可空值类型,此项特性正是基于泛型建立的。

1.3K10

# C#学习-泛型-集合-堆栈-队列-哈希-字典

集合的类型 集合可分为两类:泛型集合与泛型集合 泛型集合类一般位于System.Collections.Generic名称空间, 泛型集合类位于System.Collections名称空间 此外...泛型集合 下面是各种常用的System.Collections命名空间 泛型集合 下面是各种常用的System.Collections.Generic命名空间的类 动态数组 ArrayList 动态的增加和减少元素...实现了ICollection和IList和IEnumerable接口 灵活的设置数组大小 不安全的集合类型 其元素为值类型时,效率不高(装箱和拆箱耗性能) ArrayList常用方法与描述 List...泛型动态数组 List类是ArrayList类的泛型等效类 同样实现了IList接口,IEnumrator接口和ICollection 与ArrayList不同的是,声明集合时需要声明集合内部的数据类型...,即T的类型 安全的集合类型 某种情况时,在处理值类型时其处理速度比ArrayList快得多 LIst常用方法与描述 常见集合和列表实现接口 练习 利用ArrayList或者是List做一个小型的学生管理系统

90420

foreach, 用还是不用,这是一个问题~

接触过C#循环的朋友,想来对foreach应该不会陌生,相比一般的for循环方式,foreach显得更加优雅简洁,Unity支持C#脚本,平日使用中数组列表什么的自然也会遇到不少,想来foreach...m_arrayList = new ArrayList { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; List m_list = new List...说到这个问题,我们便需要进一步的认识一下foreach了,相比传统的for,foreach其实是C#的一种语法糖,还拿上面的测试程序举例,foreach一个List最后会被C#翻译为大概下面这种形式:...对于原生数组的foreach形式做了优化,使用了传统的for来遍历数组,自然便不会申请额外的内存了~   再来试下ArrayList~ void ForeachArrayList() { // foreach...foreach即可,因为就像上面看到的那样,foreach原生数组并不会产生GC Alloc;最后,其实新版的C#早已修复了foreach会产生额外内存申请的问题,只是由于Unity内含的Mono版本较早

1.4K11

聊聊C#中的泛型的使用(新手勿入)

每个集合的详细规范可以在System.Collection.Generic名称空间下找到。 [通用类C#] 装箱和拆箱 .Net定义了两种主要的数据类型来表示变量,也就是传说中的值类型和引用类型。... 泛型集合的基类,可以比较两个泛型对象是否相等 Dictionary 键值对的泛型集合 List...对于泛型ArrayList类,如果使用对象类型,则可以向集合中添加任何类型,这些类型有时会导致严重的问题。...下面的示例显示向ArrayList类型的集合添加一个整数、字符串和对象; ArrayList obj = new ArrayList(); obj.Add(50); obj.Add("Dog")...首先,将数组类型对象引用到堆栈集合中。然后使用Pop()方法从堆栈中删除集合中元素的值并显示在屏幕上。

1.7K40

C#规范整理·集合和Linq

正文# ### 1.元素数量可变的情况下不应使用数组   在C#中,数组一旦被创建,长度就不能改变。如果我们需要一个动态且可变长度的集合,就应该使用ArrayListList<T>来创建。...List<T>是ArrayList的泛型实现,它省去了拆箱和装箱带来的开销。 注意  由于数组本身在内存上的特点,因此在使用数组的过程中还应该注意大对象的问题。...如果一定要动态改变数组的长度,一种方法是将数组转换为ArrayListList<T>,需要扩容时,内部数组将自动翻倍扩容 还有一种方法是用数组的复制功能。...# 注意,泛型集合在System.Collections命名空间下,对应的泛型集合则在System.Collections.Generic命名空间下。...11.使用匿名类型存储LINQ查询结果(最佳搭档)# 从.NET 3.0开始,C#开始支持一个新特性:匿名类型。匿名类型由var、赋值运算符和一个空初始值(或以new开头的初始化)组成。

15330

C#2.0新增功能02 泛型

C# 语言和公共语言运行时 (CLR) 的 2.0 版本中添加了泛型。...()); } }   泛型类和泛型方法兼具可重用性、类型安全性和效率,这是非泛型类和泛型方法无法实现的。...建议所有定目标到 .NET Framework 2.0 及更高版本的应用程序都使用新增的泛型集合类,而不是旧的泛型集合类(如 ArrayList)。 有关详细信息,请参阅 .NET 中的泛型。...(大多数情况下,应使用 .NET Framework 类库提供的 List 类,而不是自行创建类。)在通常使用具体类型来指示列表中所存储的类型的情况下,可使用类型参数 T。...应尽可能使用这些类来代替某些类,如 System.Collections 命名空间中的 ArrayList。 可以创建自己的泛型接口、泛型类、泛型方法、泛型事件和泛型委托。

67950

用了这么多年的 Java 泛型,你对它到底有多了解?

所以对于下面这段代码来说: List list = new ArrayList(); list.add(66); // 1 int num = list.get(0)...类型擦除之后,上面代码等同于: List list = new ArrayList(); list.add(Integer.valueOf(66)); int num = ((Integer) list.get...下面这段代码,从源码上两个 List 看起来是不同类型的集合,但是经过泛型擦除之后,集合都变为 ArrayList。所以 if语句中代码将会被执行。...最后再举个例子,比如说我们需要实现一个泛型 List 转换成数组的方法,我们就没办法直接从 List 去获取泛型实际类型,所以我们不得不额外再传入一个 Class 类型,指定数组的类型: public...以 ArrayList 为例,一套为普通的 java.util.ArrayList,一套可能为 java.util.generic.ArrayList

69910

C#基础深入学习02

; } } } ArrayListList 的比较 ArrayList ArrayList是一个特殊数组,通过添加和删除元素就可以动态改变数组的长度。...ArrayList集合相对于数组的优点:支持自动改变大小,可以灵活的插入元素,可以灵 活的删除元素,可以灵活的访问元素,但是ArrayList只支持一维,并且查询和检索的 速度比较慢。...在C#中数据类型分为两类:值类型和引用类型。...; } } } List List是由ArrayList发展而来的集合,同样具备了ArrayList相对于Array的优点,List是一种泛型集合,解决了ArrayList对于值类型需要拆箱和装箱的缺点...(2); //第二种方法 int[] array = {1,2,3,4,5}; List objList = new List(array);//用array这个数组来填充 //第三种 List

14710

数据结构基础温故-1.线性表(上)

,Z)就是一个线性表,表中的每一个英文字母都是一个数据元素;又如,成绩单也是一个线性表,表中的每一行是一个数据元素,每个数据元素又由学号、姓名、成绩等数据组成。...2.2 动态顺序表之ArrayListList   如果需要动态地改变数组所占用的内存空间的大小,则需要以数组为基础做进一步的抽象以实现这个功能。...在C#中,ArrayList被称为动态数组,它的存储空间可以被动态地改变,同时还有添加、删除元素的功能。   ...于是,从.NET 2.0开始出现了泛型版本的List,它完美取代了ArrayList。...3.1 ArrayList的实现 ?   通过查看源码,其关键就在于EnsureCapacity方法动态地调整数组大小。 3.2 List的实现 ?

48910

C# list介绍

一、LIST概述 所属命名空间:System.Collections.Generic public class List : IList, ICollection, IEnumerable..., IList, ICollection, IEnumerable List类是 ArrayList 类的泛型等效类。...该类使用大小可按需动态增加的数组实现 IList 泛型接口。 泛型的好处: 它为使用c#语言编写面向对象程序增加了极大的效力和灵活性。...“添加到 ArrayList 中的任何引用或值类型都将隐式地向上强制转换为 Object。如果是值类型,则必须在将其添加到列表中时进行装箱操作,在检索时进行取消装箱操作。...当前 List 的元素被逐个传递给Predicate委托,并在 List 中向前移动,从第一个元素开始,到最后一个元素结束。当找到匹配时处理即停止。

33110

c#数组简单知识补充

c#数组的几个简单的补充 数组是引用类型,不论其元素是值类型还是引用类型。...c#数组对象实现的各个接口: // 定义了浅拷贝的能力,因此数组可以进行浅拷贝 System.ICloneable // ICollection接口的子代,使用接口编程减轻耦合,该接口只定义了一些方法...,有索引器,查询元素位置,插入数据,移除索引位置数据这个方法,简单的可以当作存放数据的容器,不能像List那样具有很多数据处理的方法。...System.Collections.Generic.IEnumerable // 只读list,通过索引访问该只读list的元素 System.Collections.Generic.IReadOnlyList...,而是在托管代码运行时由CLR负责处理,对一维数组赋予接口能力,一维数组不能拥有接口能力。

12910

C#泛型入门泛型类、泛型集合、泛型方法、泛型约束、泛型委托

,包含了几个新的基于泛型的集合类,官方建议.net 2.0 及更高版本的应用程序使用心得泛型集合类,而不使用泛型集合类,例如ArrayList。...list1 = new System.Collections.ArrayList(); list1.Add(3); list1.Add(105);...System.Collections.ArrayList list2 = new System.Collections.ArrayList(); list2.Add("科比");...但是缺点也很明显,第一个缺点是编译的时候不会检查类型,例如 System.Collections.ArrayList list1 = new System.Collections.ArrayList...有关更多信息,请参见使用可以为 null 的类型(C# 编程指南)。 where T : class 类型参数必须是引用类型;这一点也适用于任何类、接口、委托或数组类型。

2.5K30
领券