在C#中操作结构中的变量

时间:2012-09-12 00:43:16

标签: c# struct

我正在努力学习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是一个“字段”但是像“类型”一样使用。

我可能缺少一些简单的东西,但我对试验和错误的耐心已经耗尽。那么我做错了什么?我理解为什么结构有用的基本概念,但是我需要能够实际使用它!

2 个答案:

答案 0 :(得分: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方法中。

答案 1 :(得分: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