是什么导致了'不一致的可访问性'下面的代码有错误
本文关键字:有错误 代码 访问 不一致 是什么 | 更新日期: 2023-09-27 18:18:37
错误:
错误1不一致的可访问性:字段类型
'System.Collections.Generic.List<Lines>'
比field更难接近'Star.lines'
J:' documentation 'Universiteit Utrecht - Game技术/模型/系统Ontwikkeling'Assignment4'ShapeDrawing'ShapeDrawing' stars .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));
}
}
}
我已经试着调查这个错误的原因。它似乎是由公共类使用的公共字段引起的。在这种情况下,似乎方法和字段都是公共的,所以我不确定问题是什么。
事先感谢任何帮助。
如果要在类上公开类型,则该类型必须至少与类具有相同的可访问性。
在你的例子中,Star
和CalculateGeometry
是public
,所以Lines
,因为它暴露在一个公共方法上,也必须是公共的。
您可以将其设置为公共,或者将类的可访问性降低为等于或小于Lines
类。
Lines
可能是internal
,因为如果不添加访问修饰符,这是默认的。
From the docs:
-
public
- 不限制访问。
-
protected
- 访问仅限于包含类或从包含类派生的类型。
-
internal
- 访问仅限于当前程序集。
-
protected internal
- 访问仅限于当前程序集或从包含类派生的类型。
-
private
- 访问仅限于包含类型。
公共 class Star
你的Lines
类比Star
更难访问。
修改Lines
的访问权限为public