C#数组:搜索、排序与多维数组的使用
1. 数组初始化的效率考量
在某些情况下,直接传递数组可能比传递集合更高效。可以使用数组初始化器,而非集合表达式来实现这一点,或者将集合表达式转换为数组类型,让编译器明确所需的类型。
如果编写的代码是用固定内容初始化数组,建议将数组放入静态只读字段中。这样,数组只会创建一次并被重复使用。除非每次代码运行都确实需要一个新的数组实例(例如,因为要修改数组,或者每次内容都不同),或者相关方法只调用一次,否则重复使用同一个数组对象通常更高效。
2. 数组的搜索与排序
2.1 搜索场景
在实际应用中,有时可能不知道所需数组元素的索引。例如,编写一个显示最近使用文件列表的应用程序,每次用户打开文件时,需要将该文件移到列表顶部,并检测文件是否已在列表中,避免重复显示。若用户通过最近文件列表打开文件,可知道其位置;但如果通过其他方式打开,就需要根据文件名查找其在列表中的位置。
2.2 搜索方法
- Array.IndexOf 方法 :这是搜索元素最直接的方法,不要求数组元素按特定顺序排列。只需传入要搜索的数组和要查找的值,它会遍历元素,直到找到匹配的值。找到第一个匹配元素时返回其索引,若遍历完数组仍未找到则返回 -1。示例代码如下:
int recentFileListIndex = Array.IndexOf(myRecentF);
if (recentFileListIndex < 0)
{
AddNewR