为什么我的私有数组使用 public 属性 给我一个不一致的可访问性错误
Why does my private array give me an inconsistent accessibility error using a public property to get it
感谢您的浏览并提前感谢您的任何建议
我想将我的数组 'notes' 保密,因为其他 class 不应篡改它。
我确实需要其他 classes 来读取该数据,因此认为为它创建一个 属性 是封装它的正确方法。
但是我在 Unity 控制台中收到此错误
Assets/testScripts/rhythmGameNotes.cs(22,23): error CS0053: Inconsistent
accessibility: property type `rhythmGameNotes.note[]' is less accessible
than property `rhythmGameNotes.Notes'
下面是源代码(截了一点)
private struct note
{
public float y;
public float noteDuration;
public float noteSample;
public GameObject go;
}
private note[] notes; // this should remain hidden from other classes
public note[] Notes
{
get
{
return notes;
}
}
再次感谢
吉姆
制作你的结构public
public struct note
{
public float y;
public float noteDuration;
public float noteSample;
public GameObject go;
}
Notes
字段是 public,返回 note
个对象的数组。同时,note
结构的声明是私有的。这意味着 "outside world" 对 Notes
字段 returns.
的内容一无所知
将 notes
结构从私有更改为 public 将解决问题。
您遇到的问题是您的 note
结构是私有的,因此只能由同一文件中的 classes 访问。
但是由于您希望从外部世界访问此内容,因此人们无法访问 note
类型,这意味着当您尝试这样做时:
public note[] Notes
{
get
{
return notes;
}
}
您的错误是类型 note
无法公开解析。如果您要求人们从 属性 访问此结构,您将必须创建结构 public
:
public struct note
{
public float y;
public float noteDuration;
public float noteSample;
public GameObject go;
}
需要注意的另一件事是,如果您不希望任何其他 class 修改您不错的 collection 笔记,那么我建议您将 属性 更改为返回一个返回 ReadOnlyCollection<note>
.
的数组
public ReadOnlyCollection<note> Notes
{
get
{
return new ReadOnlyCollection<note>(notes);
}
}
使用您的 object 对 classes 说的原因,此 collection 不用于修改,仅用于阅读。我发现这比标准数组更具描述性,如果我使用你的 class 会告诉我没有理由对 collection.[= 中的 object 进行更改18=]
感谢您的浏览并提前感谢您的任何建议
我想将我的数组 'notes' 保密,因为其他 class 不应篡改它。
我确实需要其他 classes 来读取该数据,因此认为为它创建一个 属性 是封装它的正确方法。
但是我在 Unity 控制台中收到此错误
Assets/testScripts/rhythmGameNotes.cs(22,23): error CS0053: Inconsistent
accessibility: property type `rhythmGameNotes.note[]' is less accessible
than property `rhythmGameNotes.Notes'
下面是源代码(截了一点)
private struct note
{
public float y;
public float noteDuration;
public float noteSample;
public GameObject go;
}
private note[] notes; // this should remain hidden from other classes
public note[] Notes
{
get
{
return notes;
}
}
再次感谢
吉姆
制作你的结构public
public struct note
{
public float y;
public float noteDuration;
public float noteSample;
public GameObject go;
}
Notes
字段是 public,返回 note
个对象的数组。同时,note
结构的声明是私有的。这意味着 "outside world" 对 Notes
字段 returns.
将 notes
结构从私有更改为 public 将解决问题。
您遇到的问题是您的 note
结构是私有的,因此只能由同一文件中的 classes 访问。
但是由于您希望从外部世界访问此内容,因此人们无法访问 note
类型,这意味着当您尝试这样做时:
public note[] Notes
{
get
{
return notes;
}
}
您的错误是类型 note
无法公开解析。如果您要求人们从 属性 访问此结构,您将必须创建结构 public
:
public struct note
{
public float y;
public float noteDuration;
public float noteSample;
public GameObject go;
}
需要注意的另一件事是,如果您不希望任何其他 class 修改您不错的 collection 笔记,那么我建议您将 属性 更改为返回一个返回 ReadOnlyCollection<note>
.
public ReadOnlyCollection<note> Notes
{
get
{
return new ReadOnlyCollection<note>(notes);
}
}
使用您的 object 对 classes 说的原因,此 collection 不用于修改,仅用于阅读。我发现这比标准数组更具描述性,如果我使用你的 class 会告诉我没有理由对 collection.[= 中的 object 进行更改18=]