Хранение массива структур в GlobalVariables.cs в C #

c# arrays struct

38 просмотра

1 ответ

У меня есть массив структур. Как мне хранить их глобально в GlobalVariables.cs? Когда я пытаюсь, он выдает ошибку, говоря, что он недоступен из-за уровня защиты. Пожалуйста помоги!

Вот код GlobalVariables.cs:

public class GlobalVariables
    {
       List<Employee[]> persons = new List<Employee[]>();
    }

Вот код формы:

List<Employee> persons = new List<Employee>()
{
    new Employee { Name = "alfred", Id = 203476, Authority = "1" },
    new Employee { Name = "barbara", Id = 182856, Authority = "4" },
    new Employee { Name = "chris", Id = 398046, Authority = "2" },
};

А вот структура сотрудников:

public struct Employee
    {       
        public string Name;
        public int Id;
        public string Authority;
    }
Автор: user3905287 Источник Размещён: 08.11.2019 11:01

Ответы (1)


0 плюса

Решение

Из вашего кода я не уверен, что вы пытаетесь сделать, но если вы сделаете GlobalVariables статическим классом (открытый статический класс GlobalVariables), а затем получите доступ к нему, как GlobalVariables.persons из других ваших классов, все будет хорошо. Если это не сработает, попробуйте немного объяснить, что вы хотите сделать с вашим кодом.

public static class GlobalVariables
{
   public static List<Employee[]> persons = new List<Employee[]>();

// поля статических классов должны быть статическими и общедоступными, если к ним обращаются из других классов}

Тогда (из другого класса):

Employee person = new Employee();
GlobalVariables.persons.Add(person);

РЕДАКТИРОВАТЬ: к сожалению - только что заметил, что ваш глобальный список представляет собой список массивов, поэтому вы бы добавили person [] вместо person. Не уверен, почему вы хотите это сделать, но приведенный выше код отвечает на ваш вопрос о глобальном доступе с помощью общедоступной статики.

на заметку, использование

List<Employee>

было бы намного проще, чем

List<Employee[]> 

для большинства целей. Вы всегда можете сгруппировать свой список, если нужно, используя что-то вроде

GlobalVariables.persons.Where(p=>p.Authority=="2");

если вам действительно нужно сгруппировать сотрудников, лучше использовать глобальный словарь <>, а не список массивов.

Автор: Shannon Holsinger Размещён: 20.08.2016 07:52
Вопросы из категории :
32x32