1

私は、本の例を理解するのがやや難しい初心者です。私は本を​​読み、コードをコンパイルして、それが何をするのかを見ていきます。私は構造体、特に構造体変数のセクションにいます。次のコードにはエラーがありますpoint does not take two arguments。誰かが私がここで欠けている/間違っているものを見つけるのを手伝ってもらえますか?ありがとう。

    using System;

    class Program
    {
        static void Main(string[] args)
        {

            // Create an initial Point.
            Point myPoint;
Point p1 = new Point(10, 10);
            myPoint.X = 349;
            myPoint.Y = 76;
            myPoint.Display();
            // Adjust the X and Y values.
            myPoint.Increment();
            myPoint.Display();
            Console.ReadLine();
        }
        // Assigning two intrinsic value types results in
        // two independent variables on the stack.
        static void ValueTypeAssignment()
        {
            Console.WriteLine("Assigning value types\n");
            Point p1 = new Point(10, 10);
            Point p2 = p1;
            // Print both points.
            p1.Display();
            p2.Display();
            // Change p1.X and print again. p2.X is not changed.
            p1.X = 100;
            Console.WriteLine("\n=> Changed p1.X\n");
            p1.Display();
            p2.Display();
        }
    }


    struct Point
    {
        // Fields of the structure.
        public int X;
        public int Y;
        // Add 1 to the (X, Y) position.
        public void Increment()
        {
            X++; Y++;
        }
        // Subtract 1 from the (X, Y) position.
        public void Decrement()
        {
            X--; Y--;
        }
        // Display the current position.
        public void Display()
        {
            Console.WriteLine("X = {0}, Y = {1}", X, Y);
        }

    }
4

6 に答える 6

7

Point引数を使用して呼び出すため、に2つのパラメーターのコンストラクターを追加する必要があります(10, 10)。

struct Point
{
    // Fields of the structure.
    public int X;
    public int Y;

    public Point(int x, int y)
    {
        X = x;
        Y = y;
    }

または、組み込みのnullary(パラメーターなし)コンストラクターを使用して構築し、プロパティを設定することもできます。

Point myPoint = new Point();
myPoint.X = 349;
myPoint.Y = 76;

その省略形は次のとおりです。

Point myPoint = new Point { X = 349, Y = 76 };

またはさらに短い:

var myPoint = new Point { X = 349, Y = 76 };

最後に、構造体を不変にすることは一般的に良い習慣です。一度構築されると、その内容を変更することは不可能になるはずです。これは、言語の他の多くの落とし穴を回避するのに役立ちます。

于 2012-09-11T12:57:28.827 に答える
4

2つの引数を持つコンストラクターを使用してポイントを構築する代わりに、同じ呼び出しの一部としてプロパティをインスタンス化します。例えば:

Point p = new Point { X = 1, Y = 2 };

追加のコードを記述しなくても、1行で構築できるという利点があります。

于 2012-09-11T12:58:46.613 に答える
0

2つのパラメーターが定義されたコンストラクターはありません。有効にするには、ポイント構造体は次のようになります。

public Point(int x, int y)
{
    X = x;
    Y = y;
}
于 2012-09-11T13:04:30.967 に答える
0

Pointには、2つのパラメーターを受け取るコンストラクターがありません。

必要なもの:

public Point(int x, int y){ // assign these to your properties. }
于 2012-09-11T12:58:09.220 に答える
0

Point構造体のコンストラクターがありません。

public Point(int x, int y)
{
    X = x;
    Y = y;
}
于 2012-09-11T13:00:01.960 に答える
0

メインのポイントを初期化する必要はありませんか?

 Point myPoint = new Point();
于 2012-09-11T13:02:09.727 に答える