我遇到一个错误,并在我的书中搜索了答案,并观看了这个特定主题的教程。差距很大,表示我添加的另一个名为Point
class Program
{
private static Point another;
static void Main(string[] args)
{
Point origin = new Point(1366, 768);
Point bottomRight = another;
double distance = origin.DistanceTo(bottomRight);
Console.WriteLine("Distance is: {0}", distance);
Console.WriteLine("Number of Point objects: {0}", Point.ObjectCount());
}
}
class Point {
private int x, y;
private int objectCount = 0;
public Point()
{
this.x = -1;
this.y = -1;
objectCount++;
}
public Point(int x, int y)
{
this.x = x;
this.y = y;
objectCount++;
}
public double DistanceTo(Point other)
{
int xDiff = this.x - other.x;
int yDiff = this.y - other.y;
double distance = Math.Sqrt((xDiff * xDiff) + (yDiff * yDiff));
return distance;
}
public static int ObjectCount()
{
**return objectCount;**
}
}
答案 0 :(得分:3)
您的ObjectCount()
方法是 static
方法,而您的属性不是。
public static int ObjectCount()
当您从未在代码中分配的属性中读取时。因此,请从方法签名中删除 static 关键字。
public int ObjectCount()
{
return objectCount;
}
答案 1 :(得分:0)
1)请在单独的块中发布完整的代码,也请告诉人们您在哪里得到错误;
2)我的猜测是错误CS0120来自以下行:Console.WriteLine(“点对象数:{0}”,Point.ObjectCount());
然而,我想你想要计算所有创建的Point对象。你的错误是使objectCount成为实例成员。
你看,Point类的每个实例都有自己的objectCount,构造函数完成后它总是为1。出于同样的原因,您无法调用Point.ObjectCount()并从中返回objectCount,因为objectCount不是静态成员,而是绑定到实例。
要修复代码,请将objectCount设为静态。这样,Point的所有实例都只有一个objectCount。