如何在不使用列表的情况下将对象Cbook添加到我的类CBook中

时间:2017-12-03 02:29:09

标签: c#

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;

2 个答案:

答案 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的实现中吗?