在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是一个"字段",但使用起来像一个"类型"
我可能错过了一些简单的东西,但我对试错的耐心已经耗尽了。那么我做错了什么?我理解结构为什么有用的基本概念,但我需要在制作它后能够实际使用它!
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需要在方法内部。在这种情况下,它们位于主方法内部。