Abhilash.J.A Ответов: 1

Как я могу удалить старые значения из статического класса C#?


Всем привет,

Я хочу передать элементы списка из одного класса в другой. Я использовал статическое ключевое слово. Но теперь, когда приложение работает, все еще есть старая переменная.

На самом деле у меня есть listview с флажками. После того, как установлены флажки, нажмите кнопку. Затем всплывающее другую страницу окно, которое содержит элемент управления ListView в отношении каждого Parent_File_Name и userId . Я столкнулся с проблемой, после запуска этого приложения windows, то много раз нажмите на кнопку снова обе статические переменные содержат целые элементы списка. Как это можно сделать? Ты можешь меня достать?

Пожалуйста, помогите мне...

Что я уже пробовал:

В 1-м классе,

foreach (DocumentsUser item in listView1.SelectedItems)
{
    ImgName.Add(item.Parent_File_Name);
    UserId.Add((int)item.UserId);
}


private static List imgName = new List();
      public static List ImgName { get { return imgName; } }

      private static List userId = new List();
      public static List UserId { get { return userId; } }


2-й класс, принимающий эти статические переменные,

foreach (var userId in Qscan.UC_FileMgmt.UserId)  
           {  
               foreach (var imgName in Qscan.UC_FileMgmt.ImgName)  
               {  

Kornfeld Eliyahu Peter

Вы когда-нибудь очищаете список?

Abhilash.J.A

Нет, как я могу очистить список перед вызовом снова и снова в C#?

Tomas Takac

Не используйте статические переменные, статика-это зло! Вам нужно понять, каков жизненный цикл ваших объектов. Когда вы создаете новое окно, передайте новую модель представления и заполните ее своим списком. Кроме того, использование двух отдельных списков для чего-то, что явно является одной сущностью, - это плохо. Создайте другой класс для инкапсуляции userid и imgname. В целом я чувствую, что вы пытаетесь решить проблему, которая слишком велика для вас. На самом деле ничего плохого в этом нет, но чтобы научиться, вам нужно разбить его на более мелкие кусочки.

1 Ответов

Рейтинг:
9

Kornfeld Eliyahu Peter

Поскольку вы использовали статическую переменную, она будет иметь одно и то же значение во всех экземплярах (что, вероятно, очень плохо), поэтому, если вы добавите элементы из одного экземпляра, они будут там, когда вы находитесь в другом экземпляре...
Как уже говорилось раньше, это, вероятно, очень плохо и уж точно не советуется...
Однако, если случайно это именно то, что вы хотите, вы должны очистить список, прежде чем пополнять его...
List (T). Clear Method (System.Коллекции.Общий)[^]


Abhilash.J.A

Спасибо, сэр! Это работает. Да благословит вас Бог.