我遇到阵列问题,我需要找到一个数组的最低自由位置来向其中插入信息。我该怎么做呢?
例如我有数组string[] array = String[10]
,其中数组的某些位置已经填充,我需要在数组中选择一个点,然后搜索返回到位置0,这些点是免费的然后返回那个值。
这可能很简单,但我感到非常难过,谢谢你的帮助。
答案 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周期每次进行线性搜索。我认为可以尝试改进设计。