Как использовать значение списка в другом методе? - PullRequest
0 голосов
/ 06 мая 2020

У меня несколько флажков, и я сохраняю решение пользователя в списке, а затем мне нужно использовать его в другом методе. Но если я попытаюсь объявить List userDecision = new List (); для метода FindAllArticlesForPurchase список пуст. Как я могу получить свои значения, чтобы отфильтровать свои статьи на основе выбора?

List<int> userDecision = new List<int>() { -1, 1, 2, 3, 4 };

 public bool FilterAllItems
        {
            set
            {

                _filterAllItems = value;
                NotifyPropertyChanged();
                if (FilterAllItems == true)
                {
                    FilterBeginnerItems = false;
                    FilterIntermediateItems = false;
                    FilterUpperIntermediateItems = false;
                    FilterAdvancedItems = false;
                    userDecision[-1] = -1;
                }


            }
            get => _filterAllItems;
        }

        public bool FilterBeginnerItems
        {
            set
            {
                _filterBeginnerItems = value;
                NotifyPropertyChanged();

                if (_filterBeginnerItems)
                {
                    FilterAllItems = false;

                    userDecision[1] = 1;
                }

            }
            get => _filterBeginnerItems;
        }

 private static List<Article> FindAllArticlesForPurchase(List<Article> allArticles)
        {
           List<int> userDecision = new List<int>();
}

Ответы [ 2 ]

1 голос
/ 06 мая 2020

Если вы сделаете List<int> userDecision = new List<int>();, вы действительно получите пустой список. В вашем коде список userDecision кажется свойством вашего класса. Если я правильно понимаю, если вы хотите получить к нему доступ в своем методе FindAllArticlesForPurchase, вы должны установить этот метод not stati c

private List<Article> FindAllArticlesForPurchase(List<Article> allArticles)
{
   // access userDecision here
}

или передать ссылку в параметры метода:

private List<Article> FindAllArticlesForPurchase(List<Article> allArticles, ref List<int> userDecision)
{
    // access userDecision here
}

Таким образом, вы могли бы вызвать свой метод с помощью MyClassInstanciation.FindAllArticlesForPurchase(allArticles) или FindAllArticlesForPurchase(allArticles, ref userDecision)

[EDIT]: Я только что видел, что Маркус ответил в тот же момент. Я тоже согласен с этим ответом. Это зависит от того, что именно вы хотите сделать и где вызываете эту функцию.

1 голос
/ 06 мая 2020

Вызывая List userDecision = new List (), вы объявляете новый список в области действия вашего метода stati c. new List () всегда будет создавать новый список вообще без записей. Также при выходе из области действия вашего метода этот список исчезнет, ​​поскольку он живет только в этом методе.

Поскольку вы хотите получить доступ к списку из метода stati c, измените объявление вашего списка следующим образом:

public static List<int> UserDecision
{
    get { return userDecision; }
    set { userDecision = value; }
}
private static List<int> userDecision = new List<int>() { -1, 1, 2, 3, 4 };

Теперь в вашем методе FindAllArticlesForPurchase (и во всех других методах доступа к списку) вы можете просто получить к нему доступ, позвонив

YourClassName.UserDecision

Обратите внимание, что вы должны замените YourClassName на имя класса, который включает этот код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...