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

本文关键字:变量 结构 操作 | 更新日期: 2025-04-30 12:56:22

我正努力在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是一个"字段",但使用起来像一个"类型"

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

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

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。

如果只想从定义结构点的同一类中访问x和y,则需要使用内部

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需要在方法内部。在这种情况下,它们位于主方法内部。