我正在努力学习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是一个“字段”但是像“类型”一样使用。
我可能缺少一些简单的东西,但我对试验和错误的耐心已经耗尽。那么我做错了什么?我理解为什么结构有用的基本概念,但是我需要能够实际使用它!
答案 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 。