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
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 回答
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 。

如果您只想从定义 struct Point 的同一个类中访问 x 和 y ,则需要使用internal 。

于 2012-09-12T02:21:26.030 回答