Глюк массива List - C#
Формулировка задачи:
Здравствуйте, все!
Написал приложение, в котором много и много раз использую массив типа list<T> и везде он работает правильно.
Но вот в одном месте глючит. При добавлении элемента в массив, массив увеличивается, но все элементы массива
с нулевого по последний получают значение последнего элемента. Может кто-то встречался с таким явлением?
Подскажите, как с ним бороться.
Листинг программы
- public List<Messanger> GetMessages(RequestMessagesBuilder builder)
- {
- List<Messanger> result = new List<Messanger>(); //создаём массив
- try
- {
- statistic_database.Open();
- FbCommand command = new FbCommand(builder.ToString(), statistic_database);
- FbDataReader reader = command.ExecuteReader();
- MessageType messtype = MessageType.Info;
- while (reader.Read())
- {
- int id = reader.GetInt32(0); // Message_ID
- DateTime time_start = reader.GetDateTime(1); // TIME_START
- string messageText = reader.GetString(2); // Текст сообщения
- string messageType = reader.GetString(3); // Тип сообщения
- switch(messageType)
- {
- case "Error":
- messtype = MessageType.Error;
- break;
- case "Info":
- messtype = MessageType.Info;
- break;
- case "Warning":
- messtype = MessageType.Warning;
- break;
- default: break;
- }
- Messanger entry = new Messanger(id, time_start, messageText, messtype); //получаем данные для записи в массив. Они разные и правильные.
- result.Add(entry);// Добавляем запись в массив. Количество элементов увеличивается, но все элементы массива имеют значение последней записи.
- }
- statistic_database.Close();
- }
- catch (Exception ex)
- {
- statistic_database.Close();
- throw ex;
- }
- return result;
- }
Решение задачи: «Глюк массива List»
textual
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Windows.Forms;
- namespace HainzInspections.Kernel {
- public class Messanger {
- // Сводка:
- // Выводит на экран стандартное сообщение об ошибке с указанным пользователем текстом.
- // Возращает:
- // Результат завершения выведенного окна DialogResult.
- static App app;
- public Messanger()
- { }
- public Messanger(App _app)
- {
- app = _app;
- }
- public Messanger(int messageID, DateTime time_start, string messageText, MessageType messageType)
- {
- EntryMessangerConstructor(messageID, time_start, messageText, messageType);
- }
- private void EntryMessangerConstructor(int messageID, DateTime time_start, string messageText, MessageType messageType)
- {
- _messageID = messageID;
- _startTime = time_start;
- _messageText = messageText;
- _messageType = messageType;
- }
- public Messanger ToMessanger()
- {
- //int id, DateTime tstart, DateTime tend, string oper, string product, double weight, int inspectionID, int type, string line, string note
- return new Messanger(_messageID, _startTime, _messageText, _messageType);
- }
- private static Messanger message = new Messanger(app);
- public static void SaveMessage()
- {
- message.StartTime = DateTime.Now;
- message.MessageText = _messageText;
- message.MessageType = _messageType;
- app.ManagerDb.WriteMessageToDB(message);
- }
- private static int _messageID;
- public int MessageID
- {
- get { return _messageID; }
- set { _messageID = value; }
- }
- private static DateTime _startTime;
- public DateTime StartTime
- {
- get { return _startTime; }
- set { _startTime = value; }
- }
- private static string _messageText;
- public string MessageText
- {
- get { return _messageText; }
- set { _messageText = value; }
- }
- private static MessageType _messageType;
- public MessageType MessageType
- {
- get { return _messageType; }
- set { _messageType = value; }
- }
- public static DialogResult ShowError(string message)
- {
- Messanger._messageText = message;
- Messanger._messageType = MessageType.Error;
- SaveMessage();
- string caption = "HainzInspections - Сообщение об ошибке";
- MessageBoxButtons buttons = MessageBoxButtons.OK;
- MessageBoxIcon icon = MessageBoxIcon.Exclamation;
- return MessageBox.Show(message, caption, buttons, icon);
- }
- // Сводка:
- // Выводит на экран стандартное сообщение-предупреждение с указанным пользователем текстом.
- // Возращает:
- // Результат завершения выведенного окна DialogResult.
- public static DialogResult ShowWarning(string message)
- {
- Messanger._messageText = message;
- Messanger._messageType = MessageType.Error;
- SaveMessage();
- string caption = "HainzInspections - предупреждение";
- MessageBoxButtons buttons = MessageBoxButtons.OK;
- MessageBoxIcon icon = MessageBoxIcon.Warning;
- return MessageBox.Show(message, caption, buttons, icon);
- }
- // Сводка:
- // Выводит на экран стандартное информационное сообщение с указанным пользователем текстом.
- // Возращает:
- // Результат завершения выведенного окна DialogResult.
- public static DialogResult ShowInformation(string message)
- {
- Messanger._messageText = message;
- Messanger._messageType = MessageType.Error;
- SaveMessage();
- string caption = "HainzInspections - Информационное сообщение";
- MessageBoxButtons buttons = MessageBoxButtons.OK;
- MessageBoxIcon icon = MessageBoxIcon.Information;
- return MessageBox.Show(message, caption, buttons, icon);
- }
- // Сводка:
- // Выводит на экран сообщение с вопросом, указанным в качестве входного параметра.
- // Входные аргументы:
- // 1. Вопрос, которые будет представлен пользователю (string).
- // 2. Кнопки возможных ответов (MessageBoxButtons).
- // Возвращает:
- // Результат завершения выведенного вопроса (окна) DialogResult.
- public static DialogResult ShowQuestion(string message, MessageBoxButtons buttons) {
- MessageBoxIcon icon = MessageBoxIcon.Question;
- string caption = "HainzInspections - Вопрос";
- return MessageBox.Show(message, caption, buttons, icon);
- }
- }
- public enum MessageType { Error = 0, Warning = 1, Info =2 }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д