gpt4 book ai didi

c# - 为什么我的私有(private)数组使用公共(public)属性来获取它会给我一个不一致的可访问性错误

转载 作者:太空宇宙 更新时间:2023-11-03 17:30:37 26 4
gpt4 key购买 nike

感谢您的关注,并提前感谢您的任何建议

我想将我的数组“notes”保密,因为没有其他类可以篡改它。

虽然我确实需要其他类来读取该数据,因此认为为其创建属性是封装它的正确方法。

但是我在 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;
}
}

再次感谢

吉姆

最佳答案

您遇到的问题是您的 note struct 是私有(private)的,因此只能由同一文件中的类访问。

但是由于您希望从外部世界访问此文件,因此人们无法访问 note键入表示当您尝试执行以下操作时:

public note[] Notes
{
get
{
return notes;
}
}

您的错误是说类型 note无法公开解决。如果您需要人们从属性访问此结构,您将必须创建结构 public :

public struct note
{
public float y;
public float noteDuration;
public float noteSample;
public GameObject go;
}

还有一点要注意,如果您不希望任何其他类修改您的笔记集合,那么我建议您将属性从返回数组更改为返回 ReadOnlyCollection<note>。 .

public ReadOnlyCollection<note> Notes
{
get
{
return new ReadOnlyCollection<note>(notes);
}
}

正如它对使用您的对象的类所说的那样,这个集合的原因不是为了修改,而是为了阅读。我发现这比标准数组更具描述性,如果我使用您的类,我会告诉我没有理由更改集合中的对象。

关于c# - 为什么我的私有(private)数组使用公共(public)属性来获取它会给我一个不一致的可访问性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33015882/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com