0

Visual Studio で C# を学ぼうとしていじっています。基本的なコーディング知識しかなく、あっというまに C# 5.0 を購入してしまいました。私はこの本が大好きで、読んだすべてのものからミニプログラムを作成して、それを定着させようとしています. 構造体は単純なものだと思っていましたが、何らかの理由で構造体を機能させることができません。

というわけで、本からの簡単で超基本的な例を以下に示します。

public struct Point {
    int x, y;
    public Point(int x, int y) { this.x = x; this.y = y; }
}

Point p1 = new Point();
Point p2 = new Point(1, 1);

それは正常に動作します。しかし、ここで、p1 または p2 で x 変数と y 変数を操作したいとします。私はたくさん試しましたが、うまくいきません。

public struct Point {
    public int x;
}

Point p1 = new Point();
p1.x = 10;

これはうまくいきません。p1.x を 10 に設定しようとすると、エラーが発生します。p1 は「フィールド」ですが、「タイプ」のように使用されます。

私が見逃している単純なものがあるかもしれませんが、試行錯誤に対する私の忍耐力は尽きました。それで、私は何を間違っていますか?構造体がなぜ便利なのかという基本的な概念は理解していますが、実際に作成したら実際に使用できるようにする必要があります。

4

2 に答える 2

0

Tono Nam の答えは正しいですが、不完全です。

x と y の値を希望どおりに設定するには、x と y に正しいアクセス修飾子を設定する必要もあります。

class Program
{
    public struct Point
    {
        public int x, y;
        public Point(int x, int y) { this.x = x; this.y = y; }
    }

    static void Main(string[] args)
    {
        var p1 = new Point();
        var p2 = new Point(1, 1);
        p1.x = 1;
        p1.y = 1;
    }
}

publicを使用して、任意のクラスから x および y にアクセスする必要があります。

構造体 Point が定義されている同じクラス内から x と y にのみアクセスしたい場合は、internalを使用する必要があります。

于 2012-09-12T02:21:26.030 に答える
0
class Program
{
    public struct Point
    {
        int x, y;
        public Point(int x, int y) { this.x = x; this.y = y; }
    }

    static void Main(string[] args)
    {
        Point p1 = new Point();
        Point p2 = new Point(1, 1);
    }
}

@pstが述べたように。p1 と p2 はメソッド内にある必要があります。この場合、それらは main メソッド内にあります。

于 2012-09-12T01:17:44.457 に答える