Использование struct-array - PullRequest
       5

Использование struct-array

0 голосов
/ 26 марта 2012

Я пытаюсь создать struct-array.Я использовал пример, предоставленный @JonSkeet в SO post , чтобы создать приведенный ниже пример:

 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());

1 Ответ

2 голосов
/ 26 марта 2012

Вам необходимо выставить его с помощью открытого метода

/*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;
             }
         }

    }

edit

Вы не можете получить доступ к полю MyArray вне классапотому что это частный член.Это означает, что вам нужно добавить открытое свойство, которое предоставляет это поле.

Чтобы получить доступ к MyArray [0] .Name, вызовите

JonSkeetClass.GetMyArray[0].Name

edit 2

На самом деле вам не нужно дополнительное свойство, поскольку коллекция доступна только для чтения, а также элементы, делающие это поле общедоступным, вот и все

public static readonly IList<ReportDetails> MyArray ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...