2017-03-29 9 views
1

継承テストプログラムは、特にこれらの問題を根絶するために使用します。名前 "shape"は現在のコンテキストに存在しません

クラス自体は重要ではなく、問題はメインにあります。

if文の前に "Shape shape = null"を試みましたが、if文に "Circle shape"などがあるとエラーが発生しました。

メイン:

string shapeType = ""; 
    double side = 0; 
    while (true) 
    { 
     Console.WriteLine("What type of shape? - (cir/tri/sqr"); 
     shapeType = Console.ReadLine(); 
     Console.WriteLine("How long are the sides, or the radius?"); 
     side = Convert.ToDouble(Console.ReadLine()); 
     if (shapeType == "cir") 
     { 
     Circle shape = new Circle(); 
     } 
     else if (shapeType == "tri") 
     { 
     Triangle shape = new Triangle(); 
     } 
     else 
     { 
     Square shape = new Square(); 
     } 

     // Code interacting with shapes. 
    } 
+0

かの最初の前にシェイプ形状を宣言します。 –

答えて

4

あなたは、そのブロックが終了した後、それは利用できないということを意味し、ifブロック内形状を宣言しています。

あなたが前にそれを宣言する必要があり、かつShapeとして:

Shape shape = null; 

if (shapeType == "cir") 
{ 
    shape = new Circle(); 
} 
else if (shapeType == "tri") 
{ 
    shape = new Triangle(); 
} 
else 
{ 
    shape = new Square(); 
} 

// … etc 
+0

Ah-ha!宣言の前のクラス名でした。私は "Shape shape = null"をやってみましたが、ifブロックは現在のスコープ内に既に存在する "shape"に関するエラーを返していました。私はキャストの前に "サークル/トライアングル/スクエア"が継承で不要になることを知らなかった。 –

関連する問題