Функция / метод в инициализаторе коллекции C#

Я могу вставить метод / функцию в инициализатор коллекции? я пытаюсь вставить выражение в функцию в инициализаторе коллекции, но переменная в классе запрашивает объявление своего тела. Спасибо.

            List<demo> ags = new List<demo>()
            {
                new demo { acst = "One", currUpd() = () =>  { intba += totint; } ,  st = 1 < 2},
                new demo { acst = "Two", currUpd() = () =>  { intba += intp; } = 0,  st = 1 < 2 },
                new demo { acst = "Three", currUpd() = () =>  { intba += pp; },  st = 1 < 2 }
            };


            var agss = ags.Select(x => new {acst = x.acst, currUpd = x.currUpd, st = x.st });
            foreach (var item in agss)
            {
                if (item.st == true)
                {
                    item.currUpd();

                }
            }


            public class demo
            {
            public string acst { get; set; }
            public delegate void currUpd() { get; set; }
            public bool st { get; set; }
            }

1 ответ

Вы не можете объявить свойство делегата таким образом. Объявите это как Action вместо:

    public Action currUpd { get; set; }

Теперь вы можете сделать:

List<demo> ags = new List<demo>()
{
    new demo { acst = "One", currUpd = () =>  { intba += totint; } ,  st = 1 < 2},
    new demo { acst = "Two", currUpd = () =>  { intba += intp; },  st = 1 < 2 },
    new demo { acst = "Three", currUpd = () =>  { intba += pp; },  st = 1 < 2 }
};

Я предполагаю = 0 На втором demo была опечатка

Другие вопросы по тегам