错误:
错误1可访问性不一致:字段类型
'System.Collections.Generic.List<Lines>'
比字段更难访问'Star.lines'
J:\ Documenting \ Universiteit Utrecht - Game 技术\ Modelleren en Systeem Ontwikkeling \ Assignment4 \ ShapeDrawing \ ShapeDrawing \ Star.cs 15 24 ShapeDrawing
导致错误的代码:
public class Star : Shape
{
private int x;
private int y;
private int width;
private int height;
public List<Lines> lines; // TODO: Ask explanation for cause of error.
public Star (int x, int y, int width, int height)
{
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
public override void CalculateGeometry()
{
lines = new List<Lines>();
int numPoints = 5;
Point[] pts = new Point[numPoints];
double rx = width / 2;
double ry = height / 2;
double cx = x + rx;
double cy = y + ry;
double theta = -Math.PI / 2;
double dtheta = 4 * Math.PI / numPoints;
int i;
for (i = 0; i < numPoints; i++)
{
pts[i] = new Point(
Convert.ToInt32(cx + rx * Math.Cos(theta)),
Convert.ToInt32(cy + ry * Math.Sin(theta)));
theta += dtheta;
}
for (i = 0; i < numPoints; i++)
{
lines.Add(new Lines(pts[i].X,
pts[i].Y,
pts[(i + 1) % numPoints].X,
pts[(i + 1) % numPoints].Y));
}
}
}
我试过调查错误的原因。这似乎是由公共阶层使用的公共领域引起的。在这种情况下,似乎方法和字段都是公共的,所以我不确定问题是什么。
提前感谢您的任何帮助。
答案 0 :(得分:0)
公开 <ui-select>
class Star
课程的可访问性低于Lines
。
将Star
的访问权限更改为公开。
答案 1 :(得分:0)
如果要在类上公开类型,则类型必须至少与类一样可访问。
在您的情况下,Star
和CalculateGeometry
为public
,因此Lines
,因为它在公开方法中公开,也必须公开。
您可以将其公开,或者将该类的可访问性降低到等于或小于Lines
类。
Lines
可能是internal
,因为如果您不添加访问修饰符,这是默认设置。
来自docs:
public
protected
internal
protected internal
private