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

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

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

Author24 — интернет-сервис помощи студентам
Добрый день!
Хотелось бы иметь 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.07.2014, 12:33
Ответы с готовыми решениями:

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

Время компиляции
Что влияет на время коомпиляции проекта? Количество ОЗУ? Количество ядер? Тактовая частота?...

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

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

4
Эксперт .NET
17685 / 12871 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
16.07.2014, 13:28 2
Здравствуйте!

Цитата Сообщение от vJRoF Посмотреть сообщение
как можно реализовать UsedStrings таким образом, чтобы при инициализации он отдавал все ключи, которые в будущем запросит userOfDinamicHashtable (или в принципе может запросить любой экземпляр UserOfDinamicHashtable)?
Заранее определить список всех возможных ключей и передавать их в конструктор класса. В конструкторе сразу добавить эти ключи в коллекцию с каким-нибудь дефолтным значением.
Впоследствии при доступе к таблице проверять, имеется ли в ней запрашиваемый ключ, и если нет, то бросать исключение.
0
13 / 13 / 8
Регистрация: 11.10.2013
Сообщений: 102
16.07.2014, 13:48  [ТС] 3
kolorotur, Спасибо, но это не то, что надо, к сожалению. Т.е. так сделать можно, конечно, но хотелось бы, чтобы UsedStrings сам понимал, какие ключи использует UserOfDinamicHashtable.
А список всех возможных ключей я в приведённом примере использую (я его закомментил, но оставил, чтобы было видно, что от метода UsedStrings вообще нужно.
0
Эксперт .NET
17685 / 12871 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
16.07.2014, 14:09 4
Цитата Сообщение от vJRoF Посмотреть сообщение
хотелось бы, чтобы UsedStrings сам понимал, какие ключи использует UserOfDinamicHashtable
Так определите для начала, на каком основании и оперируя какими данными он будет это сам понимать, а уж код написать — это не сложно
0
13 / 13 / 8
Регистрация: 11.10.2013
Сообщений: 102
16.07.2014, 14:21  [ТС] 5
Говоря иначе, я хочу чтобы эти ключи в UsedStrings появлялись по мере того, как я их использую в коде класса UserOfDinamicHashtable. Других оснований абсолютно никаких. Ближайшим аналогом реализации может быть регэксп, который парсит код этого класса и составляет таблицу из найденных ключей... ничего умнее я придумать не могу.
0
16.07.2014, 14:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.07.2014, 14:21
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru