2016-04-17 14 views
0

C#の学校の割り当てに問題があります。GetとSetを使用して特定の配列要素を設定する

ここにはコードの一部のみが含まれていますが、これで十分です。

私はインデックス25のボトルクラスの配列を作成しています。ボトルクラスには3つのプロパティがあります。

今、配列の値を取得して設定する必要がありますが、それを管理することはできません。

下記の私の例を参照してください。どこが間違っていますか?プログラムはエラーを表示しませんが、コンパイルは成功しません。それ以上のコードが必要な場合は、私はそれを与えることを嬉しく思います!

public class Sodacrate 
{ 
    private Bottle[] bottles; 
    public Sodacrate() // Constructor for handling new sodas in the soda crate. 
    { 
     bottles = new Bottle[25]; 

     bottles[0].Brand = "Fanta"; 
     bottles[0].Price = 15; 
     bottles[0].Kind = "Soda"; 
    } 
} 


public class Bottle 
{ 
    private string brand; 
    private double price; 
    private string kind; 

    public string Brand 
    { 
     get { return brand; } 
     set { brand = value; } 
    } 

    public double Price 
    { 
     get { return price; } 
     set { price = value; }   
    } 

    public string Kind 
    { 
     get { return kind; } 
     set { kind = value; } 
    } 

} 
+0

あなたの_compilation_が成功しない場合は、私たちに見せてもらうためのエラーが必要です。私はあなたのコードをコンパイルすると思いますが、あなたがそれを実行するとき_doはエラーを受け取ります:QiMataによって説明された理由で 'NullReferenceException'。 –

答えて

2

配列のゼロインデックスにはオブジェクトがありません。

bottles[0].Brand = "Fanta"; 
bottles[0].Price = 15; 
bottles[0].Kind = "Soda"; 

何が不足していますが、次のとおりです。そして、あなたはここでその配列内の最初のオブジェクトのプロパティを設定しようとしている何をしているか

bottles = new Bottle[25]; 

:あなたがやっていることは、ここで配列にメモリを設定しています次

//Give me a box big enough to hold 25 bottles 
//Set the brand on the first bottle 
01:

bottles[0] = new Bottle(); 

ので、ここでまとめてのは、あなたがやっていることです

これは、あなたがやるべきことです:

//Give me a box big enough to hold 25 bottles 
//Put the first bottle in the box 
//Set the brand on the first bottle 
+0

徹底的な説明をありがとう! – Max

0

ボトルが参照型であるため、その配列を作成します。この文は、値25の要素がnull参照型のデフォルト値であるが含まれています。

bottles = new Bottle[25]; 

したがって、使用する前にbottle [0]に値を割り当てる必要があります。

bottles[0] = new Bottle(); 
関連する問題