找到阵列的最低自由位置

时间:2011-11-14 21:20:48

标签: c# arrays

我遇到阵列问题,我需要找到一个数组的最低自由位置来向其中插入信息。我该怎么做呢?

例如我有数组string[] array = String[10],其中数组的某些位置已经填充,我需要在数组中选择一个点,然后搜索返回到位置0,这些点是免费的然后返回那个值。

这可能很简单,但我感到非常难过,谢谢你的帮助。

6 个答案:

答案 0 :(得分:4)

您需要循环遍历数组的所有索引,直到找到null条目。

for(int i = myArr.Length  - 1; i >= 0; i--)
{
   if(myArr[i] == null)
   {
       myArr[i] = "no longer free!";
       break;
   }
}

如果你真的需要这样做,你可能应该使用List<string>而不是数组。

答案 1 :(得分:2)

忽略你为什么这样做 - 其他人都告诉过你List<string> - 在下面的代码中,lowest等于2。

var blah = new[] {"one", "two", null, "three"};
var lowest = Array.IndexOf(blah, null);

答案 2 :(得分:1)

使用通用列表:

var myList = new List<string>();


//need to add a new item:
myList.Add("New item"); //no searching required

您可以在大多数情况下使用列表,就像数组一样,包括按下标访问成员。

答案 3 :(得分:1)

当您创建string[]的新实例时,其条目为null 现在,您只需遍历数组,直到找到第一个null条目。

string[] arrayOfStrings = new string[10];
int index = 0;
while(index < arrayOfStrings.Length && arrayOfStrings[index] != null) index++;
if(index < arrayOfStrings.Length) {
 //arrayOfStrings[index] is lowest free position
} else {
 //every position occupied
}

根据您的问题,List<string>实例可能会更好 在那里你可以使用它的Add方法将一个字符串附加到最后一个位置,
无需自己处理列表长度 如果您需要一个数组作为最终结果,ToArray方法就派上用场了。

List<string> listOfStrings = new List<string>();
listOfStrings.Add("FirstString");
listOfStrings.Add("SecondString");
string[] arrayOfStrings = listOfStrings.ToArray();

答案 4 :(得分:0)

在C#中使用数组时,你真的不应该编写这样的代码。最好将字符串存储在List<String>(或许多其他方便的集合)中,这些集合专为基本上随机访问元素而设计。如果您需要实际的字符串数组,请在.ToArray()集合上调用List

答案 5 :(得分:0)

请考虑使用List<string>,以便轻松添加元素。有一些null的数组将在稍后回复给你,你将再次检查null ... Furtrhermore附加thsat方式需要时间,这是真的,数组很小(yoiu说10个元素)但是无论如何你将花费cpu周期每次进行线性搜索。我认为可以尝试改进设计。