我正在尝试创建一个struct-array。我使用了在此SO post中找到的@JonSkeet提供的示例来创建以下示例:
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没有暴露任何方法或属性。
Update1:上面的代码示例已根据@Adrian的建议更新。
初始化:
IList<JonSkeetClass.ReportDetails> MyArray = JonSkeetClass.GetMyArray;
MessageBox.Show( MyArray[0].Name.ToString());
答案 0 :(得分:2)
您需要通过公共方法公开它
/*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
实际上你不需要一个额外的属性,因为该集合是readonly,也是项目,使该字段公开,就是它
public static readonly IList<ReportDetails> MyArray ...