Case Study – Event Practice in C#

In C# practice, we always use Event as an observer for property modification. In this post, I am sharing a practice case regarding piggy bank monitoring.


Background

A piggy bank can help us with saving an amount of money that we planned. Every time, we deposit gold coins into the piggy bank, the balance will increase accordingly.

In this case, we set our goal about is $500. We expect the application to tell us how much is the total amount in the piggy bank after each deposit and inform us when we reach our goal.


Approach Code

namespace EventsSolution
{
    public delegate void BalanceEventHandler(decimal theValue);

    class PiggyBank
    {
        private decimal m_bankBalance;
        public event BalanceEventHandler balanceChanged;

        public decimal theBalance {
            set {
                m_bankBalance = value;
                balanceChanged(value);
            }
            get {
                return m_bankBalance;
            }
        }
    }

    class BalanceLogger
    {
        public void balanceLog(decimal amount) {
            Console.WriteLine("The balance amount is {0}", amount);
        }
    }

    class BalanceWatcher
    {
        public void balanceWatch(decimal amount) {
            if (amount > 500.0m)
                Console.WriteLine("You reached your savings goal! You have {0}", amount);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            PiggyBank pb = new PiggyBank();
            BalanceLogger bl = new BalanceLogger();
            BalanceWatcher bw = new BalanceWatcher();

            pb.balanceChanged += bl.balanceLog;
            pb.balanceChanged += bw.balanceWatch;

            string theStr;
            do {
                Console.WriteLine("How much to deposit?");

                theStr = Console.ReadLine();
                if (!theStr.Equals("exit")) {
                    decimal newVal = decimal.Parse(theStr);

                    pb.theBalance += newVal;
                }
            } while (!theStr.Equals("exit"));
        }
    }
}

We declare a delegate at the beginning of the project by the following code. The delegate does not have a return type and it takes a decimal parameter.

public delegate void BalanceEventHandler(decimal theValue);

We declare an Event property in the PiggyBank class.

class PiggyBank
    {
        private decimal m_bankBalance;
        //Declare an event
        public event BalanceEventHandler balanceChanged;

        public decimal theBalance {
            set {
                m_bankBalance = value;
                //Setup an Event observer, every time theBalance amended, the event is triggerd.
                balanceChanged(value);
            }
            get {
                return m_bankBalance;
            }
        }
    }

We switch on the Event mechanism after we initialised the PiggyBank as followed:

pb.balanceChanged += bl.balanceLog;
pb.balanceChanged += bw.balanceWatch;

147 Replies to “Case Study – Event Practice in C#”

  1. Бесспорно верьте тому, что вы
    заявили/сказали. Ваше любимое оправдание/причина казалось/казалось в интернете/сети/сети
    самая простая/самая легкая вещь, о которой нужно знать.

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

    Будет вероятно вернуться, чтобы
    получить больше. Спасибо|
    Я искренне счастлив смотреть
    на этот веб-сайт сообщения, которые несут много полезных фактов, спасибо за предоставление этих
    видов статистики.|
    Вы фактически сделать это появляются очень легко наряду с представления но Я
    нахожу эту тему/материю, чтобы быть действительно/на самом деле чем-то что я думаю я мог никогда понял.
    {Это вроде как чувствуется|Такое чувство,|Это кажется
    мне слишком {сложным/сложным}
    и {очень/чрезвычайно} {широким/широким/обширным|большим|обширным/огромным}.

    {Я|я} {взглянуть|просмотр|посмотреть} {вперед|вперед} {для|НА|В|В} {в следующем|последующем} {сообщение|отправить|опубликовать|мириться}, {я|я}
    {стараться|пытаться} получить {висеть|держаться|хвататься|цепляет|мотаться} его!|
    {Отличная доставка|невероятные очки|Туш}.
    {Великие|выдающиеся|твердые/здравые} аргументы.
    Продолжайте в том же духе {удивительное/хорошее/великое} {усилие|работа/дух}.|
    Я {действительно/действительно} наслаждаюсь дизайном и макетом вашего {блога|сайта/веб-сайта}.
    Это очень легко для глаз, что делает
    его гораздо более приятным для меня, чтобы приходить сюда и навещать
    чаще. Вы наняли {дизайнера/разработчика} для создания своей темы?
    {Отлично|великолепно|потрясающе|исключительных|задолженности|превосходным}
    работы!|
    {Невероятное|смешное|выдающееся|вдохновляющее|потрясающее} {квест/история} там.

    Что {произошло|случилось после?
    {Удачи|спасибо/берегите себя}!|
    {всегда|все время/постоянно/непрерывно/каждый раз}
    я читал меньшие {статьи|посты/статьи или обзоры/содержание} {которые/которые } {также/также} проясняют их мотив, и это
    также происходит с этой {статьей|постом|фрагментом письма|абзацем},
    который я читаю {здесь|в этом месте|в
    это время/сейчас}.|
    {Вы должны|Вы должны/вам нужно} {принять участие/быть частью} конкурса на один {из лучших/из величайших|из
    лучших|из самых качественных|из самых полезных} {блоги|сайты/сайты} {в интернете|в интернете|в сети/онлайн}.
    {Я буду|Я собираюсь|я, безусловно,
    буду/я собираюсь} {рекомендовать/настоятельно рекомендую} {этот сайт|этот сайт|этот блог/этот веб-сайт}!|
    {Я был/я} {очень доволен|чрезвычайно доволен|очень доволен|очень счастлив|более чем счастлив/взволнован} {найти|открыть/раскрыть} {этот сайт|этот
    сайт|этот отличный сайт/эта страница}.
    {Я хотел|хочу|мне нужно} спасибо {для|на} время {этого|только
    для этого|благодаря этому|этим} {замечательный|фантастическим} читать!!
    Я определенно {наслаждался|любил|ценил|любил/смаковал/действительно любил} каждый {маленький кусочек|бит/часть} этого {и я/и я также} есть у вас {закладки/сохраненные
    как любимые/помеченные книгой/помеченные книгой/сохраненные в
    избранное} {чтобы проверить|увидеть/посмотреть на} новые
    {вещи|вещи/информацию} {на Вашем/в вашем} {блоге|сайте|веб-сайте/сайте}.|
    {Сладкий/замечательный} блог!
    Я нашел его во время {просмотра|серфинга/поиска}
    в Yahoo News. Есть ли у вас какие-либо {советы|предложения} о том, как попасть в список Yahoo
    News? Я уже давно пытаюсь, но, кажется, так и не добрался туда!
    {Спасибо|Большое спасибо|ценю это|Ура|Спасибо}|
    {Великий|замечательный|фантастический|великолепный/превосходный} {сайт|веб-сайт/веб-сайт}.

    {Много|много|много} {полезно/полезно} {информация/информация} здесь.

    {Я/Я} посылаю его {некоторым/нескольким/нескольким} {приятелям|приятелям/друзьям} и {также/дополнительно} делюсь вкусным.
    И {конечно/очевидно|естественно/конечно}, {спасибо/спасибо} {за ваши|на Ваших|в ваших/ваших} {усилия/пот}!|
    {отличный|замечательный|фантастика|великолепный|прекрасный}
    {сообщение|отправить|опубликовать|мириться}, очень познавательно.
    {Мне интересно/мне интересно/я размышляю} почему {другие/противоположные} {эксперты/специалисты} этого сектора {не/не} {осознают|понимают|замечают} это.

    Вы {должны/должны} {продолжать/продолжать} свое письмо.
    {Я|я} {точно|уверенно}, {ты|вы} {огромный|уже многие} читателей’ база!|
    {Великий|чудесный|фантастический|великолепный/
    превосходный} удар ! Я {хочу/хотел бы} ученик, пока вы вносите
    изменения в свой {сайт/веб-сайт/веб-сайт}, как {могу/могу} я подписаться
    на блог {сайт/веб-сайт|веб-сайт}?
    Счет {помог/помог} мне заключить приемлемую сделку.
    Я был {крошечный/немного} немного знаком с этой вашей трансляцией {предоставленной/предложенной} яркой ясной {концепцией/идеей}|
    {отличный|замечательный|фантастика|великолепный|прекрасный} {проблем|очков},
    в целом, вы {просто|просто} {победил|получил|получил}
    {а {логотип|эмблема|абсолютно} новое|новый} читатель.
    Что {может|может|Может|будет} вы {советуем|рекомендуем} {относительно|О} ваш {сообщение|отправить|опубликовать|мириться} {что вы|что вы просто, что вы просто} сделать {несколько|некоторые} дней {назад|в прошлом}?

    Любой {уверенный/положительный/определенный}?|
    Вы не возражаете, если я процитирую {пару/несколько} ваших {постов/статей}, пока я
    предоставляю кредит и источники обратно на вашу {веб-страницу|сайт|веб-сайт|блог/Блог}?
    Мой {блог-сайт|веб-сайт|блог} находится в {той же|точно такой же} {области интересов|нише}, что и
    ваш, и мои {посетители|пользователи} будут {безусловно|определенно|искренне|действительно|действительно} извлекать выгоду из {большого количества|некоторой} информации, которую вы {представляете/предоставляете}
    здесь. Пожалуйста, дайте мне знать,
    если это {хорошо|Хорошо|хорошо} с
    вами. {С уважением|большое спасибо|ценю это|Ура|Спасибо|Большое спасибо|Спасибо}!|
    Имея так много {контента и статей/письменного контента/контента}, вы когда-нибудь сталкивались с
    какими-либо {проблемами|проблемами} плагиата или нарушения авторских прав
    {нарушения|нарушения}? Мой {сайт|сайт/блог} имеет много {совершенно
    уникального/эксклюзивного/
    уникального} контента, который я либо {написал/создал/написал} сам ,либо
    передал на аутсорсинг, но он {выглядит/появляется/кажется},
    многие из них появляются по всему {интернету|интернету} без моего {согласия|разрешения|разрешения}.
    Знаете ли вы какие-либо {решения|методы|методы|способы},
    которые помогут {защитить|уменьшить|остановить|предотвратить} контент от
    {сорванного|украденного}? Я бы {конечно|определенно/искренне/по-настоящему/по-настоящему} оценил это.|

  2. I precisely desired to say thanks again. I’m not certain the things I would’ve implemented without the type of recommendations provided by you on such a question. It previously was a very frightful dilemma in my opinion, however , noticing the very specialised mode you processed that made me to leap over gladness. I am just happy for this information and in addition hope that you know what a great job you are always getting into teaching people thru your web blog. More than likely you have never got to know any of us.

  3. Переживаешь о будущем? Не можешь накопить на подушку безопасности? Спи на денежной подушке! 500 долларов ежемесячно — они твои! Реальный заработок в сети, никаких специальных знаний! Проверить https://cloud.mail.ru/public/dYna/TLVmHubEU

  4. I am glad for writing to make you know what a nice encounter my wife’s girl had studying your web site. She mastered several pieces, which include what it’s like to possess an awesome helping nature to let other individuals with ease know precisely some problematic subject matter. You truly exceeded people’s expectations. Thank you for producing these practical, trusted, informative and in addition fun tips about this topic to Kate.

  5. Надоело работать на чужого дядю? Пусть он сам работает на себя. Больше не надо жить от зарплаты до зарплаты и терпеть капризы директора. Отныне ты сам себе хозяин с заработком в 100 000 рублей ежемесячно! Срочно разбогатеть https://cloud.mail.ru/public/dYna/TLVmHubEU

Leave a Reply

Your email address will not be published. Required fields are marked *