Cbooks有一个属性" CTeam []团队"它的大小是固定的(8)。如果我想在Main中使用它添加对象:
CBook A1 = new CBook("Title1", "Author1");
CBook A2 = new CBook("Title1", "Author2");
CBooks ArrayOfBooks = new CBooks(8);
ArrayOfBooks.Add(A1);
ArrayOfBooks.Add(A2);
然后位置0和1是偶数,2到7的位置是空的。我想要做的是,使用一个变量" int aux = 0",计算这样的ocupied位置:
for (int k = 0; k < NumberOfTeams; k++)
{
if (Teams[k].Name=="")
Aux += 1;
}
所以,Aux在这种情况下是2,然后我想做&#34;团队[Aux] = A&#34;所以A将位于第2位,现在我的数组中应该有三个对象。但我得到了#34;索引超出界限&#34;
答案 0 :(得分:1)
您的实现应该与此类似:
public class Program
{
public static void Main(string[] args)
{
Element a = new Element("A");
Element b = new Element("B");
MyArray array = new MyArray(8);
array.Add(a);
array.Add(b);
Console.WriteLine(array.Count()); //2 Elements are in the array
}
}
//Sample element class.
public class Element{
public readonly String MyString;
public Element(String myString){
MyString = myString;
}
}
//Sample array class.
public class MyArray{
private readonly Element[] myArray;
private int count; //Use a property here
public MyArray(int size){
//Be careful -> check if size is >= 0.
myArray = new Element[size];
}
public bool Add(Element element){
if(myArray.Length == count) // return false if no more elements fit.
return false;
myArray[count] = element;
count++;
return true;
}
public int Count(){
return count;
}
}
因此无需创建额外的计数循环。 “MyArray”类中的“count”变量始终保持正确的值。 无论如何,这段代码的实现或用例有点笨拙。 你为什么不能直接使用更安全的清单或其他东西。那将是一个更好的解决方案。
答案 1 :(得分:0)
你需要什么样的CBooks?根据我的理解,它只是一个8个CBook对象的数组,所以为什么不使用CBook []?
CBook A1 = new CBook("Title1", "Author1");
CBook A2 = new CBook("Title1", "Author2");
CBooks[] ArrayOfBooks = new CBook[8];
ArrayOfBooks[0] = A1;
ArrayOfBooks[1] = A2;
int aux = 0;
for (int k = 0; k < ArrayOfBooks.Length; k++)
{
//break the loop because we know there are no more books
if (ArrayOfBooks[k] == null)
break;
aux++;
}
问题不包括NumberOfTeams和Teams所用的变量,但是可以将这些变量添加到CBook的实现中吗?