【问题标题】:Utilizing a struct-array使用结构数组
【发布时间】:2012-03-26 19:49:30
【问题描述】:

我正在尝试创建一个结构数组。我使用此 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 没有公开任何方法或属性。

更新1:上面的代码示例已根据@Adrian 的建议进行了更新。

初始化:

IList<JonSkeetClass.ReportDetails> MyArray = JonSkeetClass.GetMyArray;
MessageBox.Show( MyArray[0].Name.ToString());

【问题讨论】:

    标签: c# arrays .net-3.5 struct


    【解决方案1】:

    您需要通过公共方法公开它

    /*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 ...
    

    【讨论】:

    • 谢谢。这使得类在程序中可见,但我现在如何调用这些值?我在想它会是 MyArray[0].Name.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-29
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    相关资源
    最近更新 更多