C# 是什么导致';不一致的可接受性';下面的代码中有错误吗?
错误: 错误1:辅助功能不一致:字段类型C# 是什么导致';不一致的可接受性';下面的代码中有错误吗?,c#,C#,错误: 错误1:辅助功能不一致:字段类型 'System.Collections.Generic.List'比字段更难访问 'Star.lines'J:\Documenting\Universiteit Utrecht-游戏 技术\Modelleren系统 Ontwikkeling\Assignment4\ShapeDrawing\ShapeDrawing\Star.cs 15 24 ShapeDrawing 导致错误的代码: public class Star : Shape { p
'System.Collections.Generic.List'
比字段更难访问
'Star.lines'
J:\Documenting\Universiteit Utrecht-游戏
技术\Modelleren系统
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));
}
}
}
公共类星形:形状
{
私人INTX;
私营企业;
私有整数宽度;
私人内部高度;
公共列表行;//TODO:请求解释错误原因。
公共星形(整数x,整数y,整数宽度,整数高度)
{
这个.x=x;
这个。y=y;
这个。宽度=宽度;
高度=高度;
}
公共覆盖无效计算度量()
{
行=新列表();
int numPoints=5;
点[]点=新点[numPoints];
双rx=宽度/2;
双ry=高度/2;
双cx=x+rx;
双cy=y+ry;
双θ=-Math.PI/2;
双dtheta=4*Math.PI/numPoints;
int i;
对于(i=0;i
我已试着调查错误的原因。这似乎是由公共类使用的公共字段引起的。在这种情况下,方法和字段似乎都是公共的,所以我不确定问题出在哪里
提前感谢您的帮助 公共
星级
您的行
类比星型
更难访问
将
行的访问权限更改为公共公共星级
您的行
类比星型
更难访问
将行
的访问权限更改为公共如果要在类上公开类型,则该类型必须至少与该类一样可访问
在您的情况下,Star
和calculategometry
是公共的
,因此行
在公共方法上公开时也必须是公共的
您可以将其公开,或者将类的可访问性降低为等于或小于行
类
行
可能是内部
,因为如果不添加访问修饰符,这是默认设置
从:
public
- 访问不受限制李>
受保护
- 访问权限仅限于包含类或从包含类派生的类型
内部
- 访问权限仅限于当前程序集李>
受保护的内部
- 访问权限仅限于从包含类派生的当前程序集或类型
private
- 访问权限仅限于包含的类型李>
如果要在类上公开类型,则该类型必须至少与该类一样可访问
在您的情况下,Star
和calculategometry
是公共的
,因此行
在公共方法上公开时也必须是公共的
您可以将其公开,或者将类的可访问性降低为等于或小于行
类
行
可能是内部
,因为如果不添加访问修饰符,这是默认设置
从:
public
- 访问不受限制李>
受保护
- 访问权限仅限于包含类或从包含类派生的类型
内部
- 访问权限仅限于当前程序集李>
受保护的内部
- 访问权限仅限于从包含类派生的当前程序集或类型
private
- 访问权限仅限于包含的类型李>
您没有显示行的声明,但我怀疑这是一个内部
类,因此您不能在公共字段中使用它。顺便说一句,我强烈建议您无论如何不要使用公共字段。是的,您最有可能使用的是:受保护的类行(或者比public更难访问的东西,可以是内部的、受保护的或私有的)。改成公共课。好的,非常感谢。不知怎的,我每次都错过了。非常感谢。很抱歉发布了一个副本。您尚未显示行的声明
,但我怀疑这是一个内部
类,因此您不能在公共字段中使用它。顺便说一句,我强烈建议您无论如何不要使用公共字段。是的,您最有可能使用的是:受保护的类行(或者比public更难访问的东西,可以是内部的、受保护的或私有的)。改成公共课。好的,非常感谢。不知怎的,我每次都错过了。非常感谢。对不起,我发了一份副本。