0

「DemoSquare という名前のプログラムを作成します。このプログラムは、1 ~ 10 の値を持つ辺を持つ 10 個の Square オブジェクトの配列を開始し、各正方形の値を表示します。Square クラスには、辺の面積と長さのフィールドが含まれています。面積と辺の長さのパラメータを必要とするコンストラクタ. コンストラクタはそのパラメータを正方形の辺の長さに割り当て, 面積フィールドを計算するプライベートメソッドを呼び出します. また, 正方形の辺を取得するための読み取り専用プロパティを含めます.そしてエリア。」

読み取り専用の割り当てのために領域を計算するためのプライベートメソッドを取得できないため、これはトリックの質問だと思いますが、ここに私のコードがあります:

    class demoSquares
    {

        static void Main(string[] args)
        {
            Square[] squares = new Square[10];//Declares the array of the object type squares
            for (int i = 0; i < 10; i++)
            {
                //Console.WriteLine("Enter the length");
                //double temp = Convert.ToDouble(Console.ReadLine());
                squares[i] = new Square(i+1);//Initializes the objects in the array 
            }

            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine(squares[i]);
            }//end for loop, prints the squares
        }//end main

      }//end class

これは Square クラスです。

   public class Square
   {

    readonly double length;
    readonly double area;

    public Square(double lengths)//Constructor 
    {
       length = lengths;
       area = computeArea();
    }

    private double computeArea()//getmethod 
    {
        double areaCalc = length * length;
        return areaCalc;
    }
}
4

5 に答える 5

7

読み取り専用プロパティと読み取り専用フィールドを混同しないでください。

   public class Square
   {
        public Square(double lengths)
        {
           Length = lengths;
           Area = computeArea();
        }

        //Read only property for Length (privately settable)
        public double Length {get; private set;}

        //Read only property for Area (privately settable)
        public double Area {get; private set;}

        //Private method to compute area.
        private double ComputeArea()
        {
            return Length * Length;
        }
    }
于 2013-10-06T07:50:05.297 に答える
2

読み取り専用変数はコンストラクターで代入できますが、コンストラクターから呼び出されるメソッドでは代入できません。それを行う方法があります。つまり、linkです。正しい方法は、面積を計算し、結果を面積変数に格納することです。

しかし、質問の意味は異なっていたと思います。あなたの引用:

Squares の辺と面積を取得するための読み取り専用プロパティも含めます。

つまり、質問はあなたが使用することを意味しましたPropertieslengthつまり、とにプライベート変数を使用しarea、それぞれに取得専用プロパティを実装します。

public double Area 
{
    get
    {
       return area;
    }
}
于 2013-10-06T07:49:32.607 に答える
0

あなたの割り当ては、あなたの私的な機能が領域を割り当てる必要があるとは決して言いませんでした。コンストラクターは、プライベート メソッドの結果で領域を割り当てる必要があると述べています。

public class Square
{
    private readonly double length;
    private readonly double area;

    public Square(double length) 
    {
        this.length = length;
        this.area = computeArea(length); // assignment of area in constructor!
    }

    private double ComputeArea(double length) 
    {
         return length * length;
    }
}
于 2013-10-06T07:48:56.237 に答える