在unity内用c#实现一个数组的倒序输出

//1. 编写程序,把由10个元素组成的一维数组逆序存放再输出。
		
		//string [] array = {"1","2","3","4","5","6","7","8","9","10"};
		int [] array = {1,2,3,4,5,6,7,8,9,10,11};
		for (int i=0; i<array.Length; i++) 
		{
						Debug.Log (array[i]);
		}

		//string n;
		int n;
		//int x = array.Length;
		for (int i=0; i<array.Length/2; i++)
		{
			//x--;
			n=array[i];
			//array[i]=array[x];
			//array[x]=n;
			array[i]=array[array.Length-i-1];
			array[array.Length-i-1]=n;

		}
		for (int i=0; i<array.Length; i++) 
		{
			Debug.Log (array[i]);
		}
		

### Unity实现倒序的 `foreach` 遍历 在 C#Unity 的环境中,标准的 `foreach` 循环并不支持直接倒序遍历集合。这是因为 `foreach` 是基于迭代器设计的,而大多数集合类型的默认迭代顺序是从头到尾。然而,可以通过其他方式间接实现倒序遍历的效果。 以下是几种常见的实现方法: #### 方法一:使用数组反转 如果目标是一个列表或者数组,可以先将其反转再进行 `foreach` 遍历。这种方法不会修改原始数据结构,而是创建一个新的反向副本。 ```csharp using System; using System.Collections.Generic; class Program { static void Main() { List<int> list = new List<int> { 1, 2, 3, 4, 5 }; // 使用 Array.Reverse 创建临时副本 int[] reversedArray = list.ToArray(); Array.Reverse(reversedArray); foreach (var item in reversedArray) { Console.WriteLine(item); // 输出从大到小的结果 } } } ``` 此方法适用于小型集合,但对于大数据集可能会影响性能[^1]。 --- #### 方法二:通过索引访问 另一种常见的方式是利用传统的 `for` 循环来模拟倒序行为。虽然这不是严格意义上的 `foreach`,但它提供了相同的便利性和功能。 ```csharp using System; using System.Collections.Generic; class Program { static void Main() { List<int> list = new List<int> { 1, 2, 3, 4, 5 }; for (int i = list.Count - 1; i >= 0; i--) { Console.WriteLine(list[i]); // 输出从大到小的结果 } } } ``` 这种方式效率较高,尤其适合处理大型数据集。 --- #### 方法三:自定义逆向枚举器 对于更高级的需求,可以扩展集合类并提供一个专门用于倒序遍历的方法。这通常涉及实现 `IEnumerable<T>` 接口以及编写自己的迭代逻辑。 ```csharp using System; using System.Collections; using System.Collections.Generic; static class Extensions { public static IEnumerable<T> ReverseEnumerable<T>(this IList<T> source) { for (int i = source.Count - 1; i >= 0; i--) { yield return source[i]; } } } class Program { static void Main() { List<int> list = new List<int> { 1, 2, 3, 4, 5 }; foreach (var item in list.ReverseEnumerable()) { Console.WriteLine(item); // 输出从大到小的结果 } } } ``` 这种做法不仅灵活而且可重用性强,推荐在复杂项目中采用[^4]。 --- #### 性能考量 需要注意的是,不同方法之间的性能差异取决于具体场景。例如,当操作数达到上百万甚至更多时,额外内存分配可能会成为瓶颈。因此建议优先考虑原地算法(如第二种方法),除非确实需要保持原有数据不变。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值