Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2016, 00:54   #11
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
это зародыши генериков
oO

Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
Что такое лямбды - я не знаю (не приходилось ещё сталкиваться)
Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
сталкиваться непосредственно с делегатами приходилось только при обращении к компоненту из потока
Что-то мешает столкнуться?

Код:
                
        void Print(string s)
        {
            Console.WriteLine($"Hello {s}");
        }

        void DoSomething()
        {
            int something = 42;

            var functions = new List<Action<string>>();
            functions.Add(Print);
            functions.Add(s => Console.WriteLine($"Hello {s}, {something}"));
            functions.Add(s =>
            {
                Console.WriteLine($"Hello1 {s}.");
                Console.WriteLine($"Hello2 {s}.");
            });

            foreach (var function in functions)
            {
                function("Vasya");
            }

            var dict = new Dictionary<int, Action<string>>();

            dict[42] = functions[0];
            dict[100500] = functions[1];
            dict[10] = functions[1];
            dict[15] = functions[2];

            var rand = new Random();
            int ind = dict.Keys.ToArray()[rand.Next(0, dict.Count)];
            dict[ind]("Petya");
        }

Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
привёл аналогию из родственного языка, написал псевдо-код того, что я хочу получить
я например не особо понял что там было.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 21.11.2016, 01:01   #12
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

В том то и дело что вы "много чего не знаю", отсюда и помогать вам трудно
ну и что вы хотите не совсем понятно
на сколько я понял то вам нужно смотреть в mvc/mvvm, т.е. биндинг делать
создаете модель данных и привязываете ее к своим контролам, изменение в одном повлияет на другие, но только повторю, так ли понял - не знаю
если так то вы начнете спрашивать а что такое биндиг что такое эти буквы и т.д.
и опять придем к тому с чего начинали - "много чего не знаю"

по первому вопросу я говрил что может не нужно держать 2 массива, а хватит одного
ну и при программировании в шарпе массивы применяют не так часто, в основном это листы словари и т.п.
что то понятно? ))
come-on вне форума Ответить с цитированием
Старый 21.11.2016, 01:53   #13
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Если говорить аналогиями - это зародыши генериков
генерики это совсем иное.
и в С++ нет генериков.

далее, то что вы написали про С++, совсем иное.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.11.2016, 09:13   #14
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Пепел Феникса, come-on, Alex11223, окей ... Так как из псевдо-кода непонятно то, что я хочу получить - вот вам реальный код на C++ :
Код:
int x=100500; // что нибудь
int y=&x; // в переменную Y сохраняется АДРЕС, или ССЫЛКА на переменную X
y=9000; // после выполнения этой операции переменная X будет равна этому же значению
x=0; // после выполнения этой операции переменная Y будет равна этому же значению
Данный код демонстрирует о чё: при изменении переменной Y, которая ссылается на ту же область памяти, что и переменная X, значение переменной X изменится на то же самое значение. Это вполне рабочий код.
Как такое организовать на C# ?
Подпись ? Не, не слышал ...

Последний раз редактировалось OmegaBerkut; 21.11.2016 в 10:04.
OmegaBerkut вне форума Ответить с цитированием
Старый 21.11.2016, 09:25   #15
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так а задача-то какая? есть ref параметры, и экземпляры классов всегда по ссылке передаются.
(если надо изменить саму ссылку, то тоже по ref можно передавать, http://stackoverflow.com/a/186907/964478)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 21.11.2016, 09:46   #16
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Так а задача-то какая? есть ref параметры, и экземпляры классов всегда по ссылке передаются.
(если надо изменить саму ссылку, то тоже по ref можно передавать, http://stackoverflow.com/a/186907/964478)
Я уже писал раньше - что у меня НЕ передача параметра, поэтому ref не прокатит.
И про экземпляры классов писал, что с ними в данном случае, проще.
Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
... Так как это не передача параметра в функцию - ref не прокатит. ...
Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
... Но это экземпляры классов - с ними, в данном случае, проще. ...
В данный момент я реализовал то, что мой препод называет "ломом асфальт подметать" - в обработчике события у меня 16 кейсов под switch ((sender as TextBox).Name).
Что бы этого избежать - я пришёл сюда за советом.
Мне надо сохранить ссылку на переменную; сохранить её надо в Tag объекта, который (объект) при редактировании свойства Text должен изменить содержимое переменной, ссылку на которую мне нужно сохранить. Как это сделать ?
Ваша ссылка - это мне поможет ?
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 21.11.2016, 09:51   #17
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так и чем экземпляры классов не подходят?

Код:
tbox.Tag = obj;
или
Код:
Dictionary<TextBox, MyClass>
или даже
Код:
Dictionary<TextBox, int>
и просто везде использовать этот Dictionary
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 21.11.2016 в 09:55.
Alex11223 вне форума Ответить с цитированием
Старый 21.11.2016, 10:02   #18
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Alex11223, экземпляры не подходят тем, что у меня экземпляр всего один, класс которого описывает 16 переменных. На каждый из 16 компонентов интерфейса привязана своя переменная, со своим именем.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 21.11.2016, 10:16   #19
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну создать класс-обертку для них (просто 1 поле) не сложно же.

А исходная задача-то какая?
http://www.gunsmoker.ru/2008/10/x-y-z.html
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 21.11.2016, 11:04   #20
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Alex11223
Есть пачка компонентов интерфейса, которая определяет набор правил для группового переименования (нескольких) файлов. Выделение отдельного класса с этими правилами преследуется двумя целями:
1) отделение программной от интерфейсной реализации;
2) инкапсуляция методов, обрабатывающих каждую группу значений; одна группа - одно правило переименования.
Всего семь правил переименования; отсюда изначальная тематика этого треда - циклический вызов функций: одна функция = одно правило.
Каждая группа компонентов включает в себя от одного до пяти параметров правила.
Каждый компонент определяет свой параметр правила, и в Tag каждого компонента я хочу сохранить ссылку на его переменную экземпляра класса (программная реализация). Таким образом я избавлюсь от 16 событий, или, как я уже сделал - 16 кейсов.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов функции Diana528 Общие вопросы C/C++ 1 18.04.2013 21:56
вызов функции -Anton- Microsoft Office Excel 2 09.06.2011 14:18
Мини бэйсик:объявление функции, вызов функции , возврат. AL_LORD Помощь студентам 2 14.10.2010 17:48
Вызов функции new player БД в Delphi 5 07.10.2010 13:01
Вызов функции MarSeON PHP 2 01.08.2008 20:22