Реализация метода возврата сообщения

235
04 октября 2017, 06:57

Как реализовать метод GetFirstMessage()? Использовать вторую коллекцию?

public interface IMessenger
{
    void SendMessage(string message); //отправить сообщение
    string GetLastMessage(); //получить последнее сообщение
    string GetFirstMessage(); //получить первое сообщение
}

И сам код:

namespace ConsoleApp1
{
    public class Messenger : IMessenger
    {
        Stack<string> numbers = new Stack<string>();
        public void SendMessage(string message)
        {
            numbers.Push(message);
        }
        public string GetLastMessage()
        {
            if (numbers.Count != 0)
                return numbers.Pop();
            else return null;                
        }
    }
    class Program 
    {
        static void Main(string[] args)
        {
            var messenger = new Messenger();
            messenger.SendMessage("Hello");
            messenger.SendMessage("world");
            messenger.SendMessage("!");
            Console.WriteLine(messenger.GetLastMessage());
            Console.WriteLine(messenger.GetLastMessage());
            Console.WriteLine(messenger.GetLastMessage());
            Console.WriteLine(messenger.GetLastMessage());
            Console.Read();    
        }
    }
}
Answer 1

В простейшем случае я бы предложил поглядеть на LinkedList

public class Messenger : IMessenger
{
    LinkedList<string> numbers = new LinkedList<string>();
    public void SendMessage(string message)
    {
        numbers.AddLast(message);
    }
    public string GetLastMessage()
    {
        if (numbers.Count != 0)
        {
            var last = numbers.Last;
            numbers.RemoveLast();
            return last.Value;
        }
        else return null;
    }
    public string GetFirstMessage()
    {
        if (numbers.Count != 0)
        {
            var first = numbers.First;
            numbers.RemoveFirst();
            return first.Value;
        }
        else return null;
    }
}
READ ALSO
не удалось преобразовать из system intptr в int [требует правки]

не удалось преобразовать из system intptr в int [требует правки]

ХЕЛП ЛЮДИ ОШИБКА УЖЕ ДОСТАЛА МЕНЯ!

199
Aforge Net работа с ProgressBar

Aforge Net работа с ProgressBar

Здравствуйте, проигрывается стандартный плеер Aforge, задается обработчик создания нового кадра

260
С# TextBox WindowsForm

С# TextBox WindowsForm

Доброго времени суток, подскажите как присвоить переменной значение записанное мною в textbox

283