Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/34: Рейтинг темы: голосов - 34, средняя оценка - 4.53
11 / 11 / 0
Регистрация: 17.01.2013
Сообщений: 504

Хранить данные в оперативной памяти

17.01.2013, 17:22. Показов 6744. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть два класса , нужно хранить общие данные, при чём хранить и изменять быстро, пробывал делать глобальные переменные, почему то не хочет работать

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 public class PhotonServer : ApplicationBase
    {
 
        protected override PeerBase CreatePeer(InitRequest initRequest)
        {
            
            return new UnityClient(initRequest.Protocol, initRequest.PhotonPeer);
        }
        protected override void Setup()
        {
            var file = new FileInfo(Path.Combine(BinaryPath, "log4net.config"));
            if (file.Exists)
            {
                LogManager.SetLoggerFactory(Log4NetLoggerFactory.Instance);
                XmlConfigurator.ConfigureAndWatch(file);
            }
        }
        protected override void TearDown()
        {
        }
    }
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
54
55
56
57
58
59
60
61
62
63
 public class UnityClient:PeerBase
    {
        public Options _ph;
 
        private readonly ILogger Log = LogManager.GetCurrentClassLogger();
        public UnityClient(IRpcProtocol protocol, IPhotonPeer peer)
            : base(protocol, peer)
        {
            Log.Debug("Connection:" + peer.GetRemoteIP());
        }
        protected override void OnDisconnect(DisconnectReason reasonCode, string reasonDetail)
        {
            Log.Debug("Disconnected");
        }
        
        protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters)
        {
 
            MySqlCommand command = new MySqlCommand(); 
            string connectionString, commandString;
            connectionString = "Data source=localhost;UserId=root;Password=6672019;database=game;";
            MySqlConnection connection = new MySqlConnection(connectionString);
            MySqlDataReader reader;
    command.Connection = connection;
            
            try
            {
                switch (operationRequest.OperationCode)
                {
                    case 4:
                        if (operationRequest.Parameters.ContainsKey(1) && (operationRequest.Parameters[1].ToString() == "listbitv"))
                        {
                            string
                                avtor1= "";
                            _ph.gavtor = _ph.gavtor + "j";
                            
 
                             avtor1 = _ph.gavtor.Count().ToString();
                            
                            
                            
                            OperationResponse response = new OperationResponse(operationRequest.OperationCode);
                            response.Parameters = new Dictionary<byte, object> {  { 10, avtor1 } };
                            SendOperationResponse(response, sendParameters);
                        }
                        break;
                    default:
                        Log.Debug("Unknown OperationRequest received!:" + operationRequest.OperationCode);
                        break;
                }
            }
            catch (MySqlException ex)
            {
                Console.WriteLine("Error:\r\n{0}", ex.ToString());
            }
            finally
            {
                
                command.Connection.Close();
            }
        }
        
    }
вот класс где объявляю глобальные переменные
C#
1
2
3
4
5
6
public class Options 
    {
         public string gavtor="1";
 
        private Options() {  }
    }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.01.2013, 17:22
Ответы с готовыми решениями:

Как считать данные с оперативной памяти?
Здравствуйте. На днях захотел сделать свой &quot;артмани&quot; на с#, но увы гугл не помог мне в этом вопросе.Подскажите пожалуйста в какую сторону...

где хранить текст файлы? или как хранить данные?
Есть прога простенкая: берет инфу из текстфайла, редактирует и записывает обратно в тхт файл. Нужно сделать так чтобы инфу не смогли читать...

GroupBy. Хранить результаты в памяти
Нужно хранить результаты LINQ запросы в памяти. Я не уверен, правильно ли я это делаю для запроса типа GroupBy. Обязательно ли на базе его...

18
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
17.01.2013, 17:33
Закроем глаза на не соблюдение ООП, в какой строчке вы якобы пытаетесь обратиться к этой "глобальной переменной" ?
0
11 / 11 / 0
Регистрация: 17.01.2013
Сообщений: 504
17.01.2013, 17:39  [ТС]
Цитата Сообщение от 23Alex24 Посмотреть сообщение
Закроем глаза на не соблюдение ООП, в какой строчке вы якобы пытаетесь обратиться к этой "глобальной переменной" ?
а что не так с ООП??
вот в этой строке
_ph.gavtor = _ph.gavtor + "j";
и вот
avtor1 = _ph.gavtor.Count().ToString();

а ниже я отсылаю клиенту
response.Parameters = new Dictionary<byte, object> { { 10, avtor1 } };
я пробывал делать список изначально в качестве переменной, таже история
причём у клиента такой приём работает
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
17.01.2013, 17:49
Если я не ошибаюсь эти строки идут подряд:
_ph.gavtor = _ph.gavtor + "j";
и вот
avtor1 = _ph.gavtor.Count().ToString();

и что неужели переменной avtor1 не присваивается значение?

ты сделал поле публичным, нарушена инкапсуляция=)

Добавлено через 2 минуты
Что-то я запутался в твоем коде, скажи куда ты хочешь отправить значение переменной _ph.gavtor ? название класса напиши
0
11 / 11 / 0
Регистрация: 17.01.2013
Сообщений: 504
17.01.2013, 17:52  [ТС]
Цитата Сообщение от 23Alex24 Посмотреть сообщение
Если я не ошибаюсь эти строки идут подряд:
_ph.gavtor = _ph.gavtor + "j";
и вот
avtor1 = _ph.gavtor.Count().ToString();

и что неужели переменной avtor1 не присваивается значение?

ты сделал поле публичным, нарушена инкапсуляция=)
я сначала делал не публичным, но не работало, я уже по свякому пробывал просто((
работало когда при обьявлении переменной пишим так

public Options _ph = new Options();
но так создаться новый класс, и соответственно данные новые, в клиенте (где работает) написано так Options _ph; и не каких проблем не возникало
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
17.01.2013, 17:57
Почитай про принципы ООП как-нибудь) Options _ph - тут переменная объявлена новая, но не инициализирована, тебе в любом случае придется создать переменную)

как вариант можешь посмотреть про такую штуку как static,а вообще что-то мне подсказывает, что ты выбрал неверное решение, опиши задачу кратко и четко - что хочешь сделать, либо на каком этапе возникает проблема, а то кода много, а понять что ты хочешь пока не могу)
0
11 / 11 / 0
Регистрация: 17.01.2013
Сообщений: 504
17.01.2013, 19:08  [ТС]
Цитата Сообщение от 23Alex24 Посмотреть сообщение
Если я не ошибаюсь эти строки идут подряд:
_ph.gavtor = _ph.gavtor + "j"
Что-то я запутался в твоем коде, скажи куда ты хочешь отправить значение переменной _ph.gavtor ? название класса напиши
я хочу сделать так что бы переменная gavtor в классе Options была доступна из любого класса, что бы можно было к ней доступ получить в любом месте, но так что бы она не обнулялясь

Добавлено через 1 минуту
я хочу хранить на сервере данные о созданных комнатах и игроках в них, причём хочу хранить это всё не в файлах или базе, а в памяти

Добавлено через 1 час 7 минут
и тишина....
неужеле некто не поможет?
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
17.01.2013, 19:18
Цитата Сообщение от kelod Посмотреть сообщение
я хочу хранить на сервере данные о созданных комнатах и игроках в них, причём хочу хранить это всё не в файлах или базе, а в памяти
Так создай отдельный класс и храни в ее полях (свойствах) все что нужно. Чем плох такой вариант?
0
11 / 11 / 0
Регистрация: 17.01.2013
Сообщений: 504
17.01.2013, 19:35  [ТС]
Цитата Сообщение от Евгений В Посмотреть сообщение
Так создай отдельный класс и храни в ее полях (свойствах) все что нужно. Чем плох такой вариант?
а я что сделал?? в том то и дело что не работает
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
17.01.2013, 19:43
Ну тогда есть несколько вариантов:
1)Сделать класс со статическим свойством - вообще для всех и везде значение свойства будет одинаковым и мало того даже создавать экземпляр класса не придется - то, что для всех оно одинакого может в некоторых ситуациях быть минусом

2)Если не подходит вариант 1, реализовать какой-нибудь паттерн на подобие ISingleton, либо другой паттер по необходимости - их довольно много, можно найти примеры и описания

В принципе тебе этих вариантов должно хватить)
0
11 / 11 / 0
Регистрация: 17.01.2013
Сообщений: 504
17.01.2013, 22:06  [ТС]
Цитата Сообщение от 23Alex24 Посмотреть сообщение
Ну тогда есть несколько вариантов:
1)Сделать класс со статическим свойством - вообще для всех и везде значение свойства будет одинаковым и мало того даже создавать экземпляр класса не придется - то, что для всех оно одинакого может в некоторых ситуациях быть минусом

2)Если не подходит вариант 1, реализовать какой-нибудь паттерн на подобие ISingleton, либо другой паттер по необходимости - их довольно много, можно найти примеры и описания

В принципе тебе этих вариантов должно хватить)
я планировал массив хранить и изменять, если он статическим будет его не изменить же
что же касается второго способа я не понимаю даже что такое паттерн((( я шарпом занимаюсь две недели....

всё же интересно почему не работает класс с глобальными переменными?

Добавлено через 2 часа 6 минут
вот так всегда как учить так учителей полно, а как помочь так не кому...
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
18.01.2013, 07:57
Цитата Сообщение от kelod Посмотреть сообщение
я планировал массив хранить и изменять, если он статическим будет его не изменить же
что же касается второго способа я не понимаю даже что такое паттерн((( я шарпом занимаюсь две недели....

всё же интересно почему не работает класс с глобальными переменными?

Добавлено через 2 часа 6 минут
вот так всегда как учить так учителей полно, а как помочь так не кому...
А ты что считаешь что мы должны каждую секунду сидеть обновлять экран в ожидании твоего ответа? =) Статические переменные - это НЕ константы, их изменять можно в любой момент, пример:

Вот чудо сложный класс =) :
C#
1
2
3
4
5
/// <summary>Тестовый класс =РР </summary>
public class Test
{
    public static string Property { get; set; }
}
И вот очень сложная установка свойства в необходимом месте =):
C#
1
2
        Test.Property = "34534";
        Test.Property = "33333";
1
11 / 11 / 0
Регистрация: 17.01.2013
Сообщений: 504
18.01.2013, 13:53  [ТС]
спасибо, теперь работает)))
не могли бы мне только объяснить, что такое {get;set;}
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
18.01.2013, 13:59
Цитата Сообщение от kelod Посмотреть сообщение
не могли бы мне только объяснить, что такое {get;set;}
Это автоматическое свойство - свойство, поле для которого генерируется компилятором
0
11 / 11 / 0
Регистрация: 17.01.2013
Сообщений: 504
18.01.2013, 15:17  [ТС]
спасибо

Добавлено через 33 минуты
и надеюсь последний вопрос по этому поводу, при объявлении переменных всё отлично работает, но если вместо переменной объявить список, то ругается, вероятно потому что память не идеализируется, можно как-нибудь инициализировать прямо в этом классе?
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
18.01.2013, 15:50
Цитата Сообщение от kelod Посмотреть сообщение
и надеюсь последний вопрос по этому поводу, при объявлении переменных всё отлично работает, но если вместо переменной объявить список, то ругается, вероятно потому что память не идеализируется, можно как-нибудь инициализировать прямо в этом классе?
Читайте книжку по C# - там все есть. И выражайтесь точнее, на терминах C#, а не выдуманных из головы - так вас можно будет понять хотя бы.
0
11 / 11 / 0
Регистрация: 17.01.2013
Сообщений: 504
18.01.2013, 16:23  [ТС]
Цитата Сообщение от turbanoff Посмотреть сообщение
Читайте книжку по C# - там все есть. И выражайтесь точнее, на терминах C#, а не выдуманных из головы - так вас можно будет понять хотя бы.
вот класс
C#
1
2
3
4
public class Options 
    {
        public static List<string> gavtor { get; set; }
    }
если сразу обращаться к переменной gavtor.Add("один") , то ошибка,
если делаем так Options.gavtor=new Options(); и потом gavtor.add("один") , то тогда работает

вот в этом и вопрос, можно ли что то типа Options.gavtor=new Options(); сделать прямо в классе Options
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
18.01.2013, 17:15
Да можно, тогда лучше сделай так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Options
{
    private static List<string> gavtor = new List<string>();
 
    public static List<string> Gavtor
    { 
        get
        {
            return gavtor;
        }
        set
        {
            gavtor = value;
        }
    }
}
Конечно есть и другие варианты, например можно создать статический конструктор и в нем инициализировать переменную, но так в данном случае будет проще=)
1
11 / 11 / 0
Регистрация: 17.01.2013
Сообщений: 504
18.01.2013, 17:35  [ТС]
огромное спасибо всё работает
многому мне нужно ещё учиться...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.01.2013, 17:35
Помогаю со студенческими работами здесь

Использование оперативной памяти
Создаю программу подсчета суммы элементов массива. Надо подсчитать врема затраченное и количество оперативной памяти. Можно ли отследит...

Загрузка оперативной памяти
Пишу проект на C# связанный с базами данных. Необходимо мониторить то как сильно приложение грузит оперативную память прямо в окошке...

Работа в оперативной памяти
есть такой код, которые генерирует случайные пароли, взял его на каком то из форумов, пытаюсь познавать программирование, но как то сложно...

Информация об оперативной памяти
Пишу простейшую программу для вывода информации об оперативной памяти, но столкнулся с такой проблемой, что при сохранении выведенных на...

Поедание оперативной памяти
Доброго всем дня! Есть программка, выгружающая в txt-файлик фио-логин пользователей из Active Directory. 2 цикла от &quot;a&quot; до...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
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