Переменные данные теряются во время использования - PullRequest
2 голосов
/ 29 мая 2020

Фон

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

Пример кода

public class Mail Section
{
  public string SectionHeading {get; set;}
  public List<string> Labels {get; set;}
  public List<string> Data {get; set;
  public bool Table {get; set;}
}

в другом месте кода страницы.

List<string> labels = new List<string>();
List<string> data = new List<string>();
List<MailSection> mailSections = new List<MailSection>();

//section 1
labels.Add("Name");
data.Add("Some Customer");
labels.Add{"Email");
data.Add("Some.Customer@somedomain.com");
mailSections.Add(new MailSection("Customer Info",labels,data,false));
//Here, the data is still intact.
labels.Clear();
data.Clear();
//Here, I expect labels and data to be clear. 
//Unfortunately, this also clears the data in any instance of mailSection

Что я пробовал

Я попытался сделать класс MailSection одноразовым, и я попытался использовать отдельный экземпляр MailSection, который я бы добавил и сбросил.

1 Ответ

4 голосов
/ 29 мая 2020

Да, потому что все экземпляры MailSection указывают на один и тот же экземпляр меток и данных.

Решение:

Создавать новые экземпляры

List<string> labels = new List<string>();
List<string> data = new List<string>();

каждый раз для нового экземпляр MailSection

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