使用结构数组
本文关键字:数组 结构 | 更新日期: 2023-09-27 18:29:07
我正在尝试创建一个结构数组。我使用@JonSkeet在这篇SO文章中提供的例子创建了下面的例子:
public class JonSkeetClass
{
public struct ReportDetails
{
private readonly int indexd;
private readonly string name;
public ReportDetails(int indexd, string name)
{
this.indexd = indexd;
this.name = name;
}
public int Indexd { get { return indexd; } }
public string Name { get { return name; } }
}
static readonly IList<ReportDetails> MyArray = new ReadOnlyCollection<ReportDetails>
(
new[]
{
new ReportDetails(0, "Daily Unload Counts by Group"),
new ReportDetails(1,"Daily Unloads")
});
public statis IList<ReportDetails> GetMyArray
{
get{ return MyArray; }
}
}
我现在不确定如何在代码中使用这个类,因为MyArray IList没有公开任何方法或属性。
更新1:上面的代码示例已根据@Adrian的建议进行了更新。
初始化:
IList<JonSkeetClass.ReportDetails> MyArray = JonSkeetClass.GetMyArray;
MessageBox.Show( MyArray[0].Name.ToString());
您需要通过公共方法公开它
/*public*/ class JonSkeetClass /*the visibility of this class depends on where you'll be using it*/
{
public struct ReportDetails /*this needs to be public also (or internal)*/
{
....
}
public static IList<ReportDetails> GetMyArray
{
get
{
return MyArray;
}
}
}
编辑
您不能访问类外的MyArray字段,因为它是私有成员。这意味着您需要添加一个公开此字段的公共属性。
要访问MyArray[0]。Name,请调用
JonSkeetClass.GetMyArray[0].Name
编辑2
事实上,你不需要额外的属性,因为集合是只读的,项目也是只读的,将该字段公开,这就是
public static readonly IList<ReportDetails> MyArray ...