C# 是什么导致';不一致的可接受性';下面的代码中有错误吗?

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

错误:

错误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
{

    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更难访问的东西,可以是内部的、受保护的或私有的)。改成公共课。好的,非常感谢。不知怎的,我每次都错过了。非常感谢。对不起,我发了一份副本。