Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
13 / 13 / 8
Регистрация: 11.10.2013
Сообщений: 102

Hashtable, генерируемый во время компиляции

16.07.2014, 12:33. Показов 994. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Хотелось бы иметь Hashtable, который знает, какие ключи из него будут вызваны программой до первого запуска. Поясню с кодом ниже: здесь в классе DynamicHashtable для инициализации вызывается его метод UsedStrings() и по каждому из значений, которое этот метод отдаёт, пишется какое-то value - для примера не важно какое.
Экземпляр класса UserOfDynamicHashtable в свою очередь каким-то образом использует значения dynamicHashtable.
Так вот вопрос: как можно реализовать UsedStrings таким образом, чтобы при инициализации он отдавал все ключи, которые в будущем запросит userOfDinamicHashtable (или в принципе может запросить любой экземпляр UserOfDinamicHashtable)?
У меня вообще никаких законченных идей по этому поводу (кроме очень дурных), так что буду благодарен за любые варианты.
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
using System;
using System.Collections;
using System.Collections.Generic;
 
namespace ConsoleApplication23 {
    class Program {
        static void Main() {
            DynamicHahstable dynamicHashtable = new DynamicHahstable();
            Random rnd = new Random();
            foreach (string usedString in dynamicHashtable.UsedStrings()) {
                dynamicHashtable[usedString] = rnd.Next().ToString();
            }
 
            UserOfDynamicHashtable userOfDynamicHashtable = new UserOfDynamicHashtable(dynamicHashtable);
            userOfDynamicHashtable.Method1();
 
            Console.ReadLine();
        }
    }
 
    class DynamicHahstable {
        public Hashtable DynamicHashtable = new Hashtable();
 
        public string this[string key] {
            get { return DynamicHashtable[key].ToString(); }
            set { DynamicHashtable[key] = value; }
        }
 
        public string[] UsedStrings() {
            List<string> result = new List<string>();
            //result.Add("someKey 1"); result.Add("someKey 2");
            return result.ToArray();
        }
 
 
    }
 
    internal class UserOfDynamicHashtable {
        private readonly DynamicHahstable _dynamicHashtable;
 
        public UserOfDynamicHashtable(DynamicHahstable newDynamicHashtable) {
            _dynamicHashtable = newDynamicHashtable;
        }
 
        public void Method1() {
            Console.WriteLine(_dynamicHashtable["someKey 1"]);
        }
 
        public void Method2() {
            Console.WriteLine(_dynamicHashtable["someKey 2"]);
        }
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.07.2014, 12:33
Ответы с готовыми решениями:

Можно ли большой (генерируемый) файл отдать на закачку во время генерации?
Здравствуйте. Такую тему не нашел, может плохо искал. Имеем сервер IIS. На C# написан, обработчик. Обработчик - простой метод...

Время компиляции
Что влияет на время коомпиляции проекта? Количество ОЗУ? Количество ядер? Тактовая частота? Настройки в idea? Работаю с большим проектом и...

время компиляции
Доброго вечера! При компиляции defaut версии web приложение mvc 4 сайт с localhost грузится как минимум 10 секунд. Только начал осваивать...

4
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
16.07.2014, 13:28
Здравствуйте!

Цитата Сообщение от vJRoF Посмотреть сообщение
как можно реализовать UsedStrings таким образом, чтобы при инициализации он отдавал все ключи, которые в будущем запросит userOfDinamicHashtable (или в принципе может запросить любой экземпляр UserOfDinamicHashtable)?
Заранее определить список всех возможных ключей и передавать их в конструктор класса. В конструкторе сразу добавить эти ключи в коллекцию с каким-нибудь дефолтным значением.
Впоследствии при доступе к таблице проверять, имеется ли в ней запрашиваемый ключ, и если нет, то бросать исключение.
0
13 / 13 / 8
Регистрация: 11.10.2013
Сообщений: 102
16.07.2014, 13:48  [ТС]
kolorotur, Спасибо, но это не то, что надо, к сожалению. Т.е. так сделать можно, конечно, но хотелось бы, чтобы UsedStrings сам понимал, какие ключи использует UserOfDinamicHashtable.
А список всех возможных ключей я в приведённом примере использую (я его закомментил, но оставил, чтобы было видно, что от метода UsedStrings вообще нужно.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
16.07.2014, 14:09
Цитата Сообщение от vJRoF Посмотреть сообщение
хотелось бы, чтобы UsedStrings сам понимал, какие ключи использует UserOfDinamicHashtable
Так определите для начала, на каком основании и оперируя какими данными он будет это сам понимать, а уж код написать — это не сложно
0
13 / 13 / 8
Регистрация: 11.10.2013
Сообщений: 102
16.07.2014, 14:21  [ТС]
Говоря иначе, я хочу чтобы эти ключи в UsedStrings появлялись по мере того, как я их использую в коде класса UserOfDinamicHashtable. Других оснований абсолютно никаких. Ближайшим аналогом реализации может быть регэксп, который парсит код этого класса и составляет таблицу из найденных ключей... ничего умнее я придумать не могу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.07.2014, 14:21
Помогаю со студенческими работами здесь

Время компиляции программ
Почему при компиляции программ С++ и при подключении дополнительных библиотек компиляция происходит очень долго? Например компиляция при...

Время компиляции в Java
Доброго времени суток, уважаемые форумчане! Я недавно начал изучать язык программирования Java. До этого 2 года учил и немного...

Ошибка во время компиляции
Добрый день! У меня вот такая ошибка. Не знаю что делать.

Ошибка во время компиляции
Здравствуйте уважаемые участники форума, имеется программа, которая связана с БД на MS Access unit Postav_; interface uses ...

Ошибка во время компиляции
Выбивает ошибку:&quot;Run-Time Check Failure #3 - The variable 'n' is being used without being defined.&quot; Код:#include &quot;stdafx.h&quot; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru