-24 / 26 / 2
Регистрация: 17.03.2018
Сообщений: 740
1

Видимость переменной за пределами метода Timer

20.05.2018, 20:33. Показов 680. Ответов 17
Метки нет (Все метки)

Привет всем!

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Truck
        {
                        
            public short varInt1 { get; set; }
            public Boolean varBool0 { get; set; }
           
        }
 
 private void timer1_Tick(object sender, EventArgs e)
        {
            Truck tr = new Truck();
         
          
            var valueInt1 = tr.varInt1;       //здесь посредством таймера "мониторится" значение varInt1
                                                          //и присваивается valueInt1.
            var valueBool0  = tr.varBool0;  //Здесь посредством таймера "мониторится" значение varBool0
                                                         //и присваивается valueBool0
            
        }
Вопрос: В других методах valueInt1, valueBool0 не видны. Как сделать, чтобы была видны. Пробовал присвоение public int и public bool -вызывает ошибку. Да и будут ли в valueInt1, valueBool0 изменяться динамически вне метода Timer?


Спасибо

P.S. может быть криво объяснился. Уточняйте.)
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.05.2018, 20:33
Ответы с готовыми решениями:

Видимость переменных за пределами цикла
Помогите, пожалуйста, разобраться с видимостью переменных. Допустим есть код , код который...

Видимость публичного метода
Собственно, код: public static void VectorSum(Vector3D first, Vector3D second) { ...

Timer для нестатического метода
Доброй ночи! Не могу разобраться с таймером. Имеется вот такой код (прошу прощения за размер)....

Обеспечить видимость переменных в теле одного метода
Компилятор (Visual Studio 2010) выдает ошибку "Use of unassigned local variable 'RightClass'" на...

17
Нарушитель
3121 / 2217 / 1095
Регистрация: 14.08.2016
Сообщений: 7,590
20.05.2018, 20:52 2
вынеси их на уровень класса
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Truck
        {
                        
            public short varInt1 { get; set; }
            public Boolean varBool0 { get; set; }
           
        }
 short valueInt1;
 bool valueBool0;
 private void timer1_Tick(object sender, EventArgs e)
        {
            Truck tr = new Truck();
         
          
           valueInt1 = tr.varInt1;       //здесь посредством таймера "мониторится" значение varInt1
                                                          //и присваивается valueInt1.
           valueBool0  = tr.varBool0;  //Здесь посредством таймера "мониторится" значение varBool0
                                                         //и присваивается valueBool0
            
        }
и будут они доступны
1
-24 / 26 / 2
Регистрация: 17.03.2018
Сообщений: 740
20.05.2018, 20:57  [ТС] 3
Цитата Сообщение от Diamante Посмотреть сообщение
вынеси их на уровень класса. И будут они доступныю
ОК. Проверю.

P.S. Тут модератор "ругал" меня недавно, что не пользовался подсветкой С#. На заметку. Boolean -не подсвечивается, как это должно быть.
0
Нарушитель
3121 / 2217 / 1095
Регистрация: 14.08.2016
Сообщений: 7,590
20.05.2018, 21:05 4
а зачем писать 3 лишних символа?
проще через var, но, тогда нужно сразу инициализировать
0
-24 / 26 / 2
Регистрация: 17.03.2018
Сообщений: 740
20.05.2018, 21:33  [ТС] 5
"видимость" -ОК.
Но кажись "динамически" присваиваемое значение не "видно" вне метода Timer_tick.
Или скорее всего я туплю.

Хочу далее работать с valueInt1, valueBool0 в методе. Как сделать, чтобы работало? Ес-но все то, что присваивалось в методе таймера работало
в операторе условия.

Добавлено через 6 минут


C#
1
2
3
4
5
6
7
 if (!valueBool0)
            {
 
 
                do something
 
            }
0
Нарушитель
3121 / 2217 / 1095
Регистрация: 14.08.2016
Сообщений: 7,590
20.05.2018, 21:36 6
все должно быть нормально, выкладывай проблемный код, если не очень много, то целиком, если много - выкинь то, что вообще никаким боком к проблеме, так видно будет где перемудрил
0
-24 / 26 / 2
Регистрация: 17.03.2018
Сообщений: 740
20.05.2018, 21:47  [ТС] 7
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
public class Truck
        {
                        
            public short varInt1 { get; set; }
            public Boolean varBool0 { get; set; }
           
        }
 short valueInt1;
 bool valueBool0;
 private void timer1_Tick(object sender, EventArgs e)
        {
            Truck tr = new Truck();
         
          
           valueInt1 = tr.varInt1;       //здесь посредством таймера "мониторится" значение varInt1
                                                          //и присваивается valueInt1.
           valueBool0  = tr.varBool0;  //Здесь посредством таймера "мониторится" значение varBool0
                                                         //и присваивается valueBool0
        }
 
 
 private void My_method()
  {
               if (!valueBool1)
 
               {
                       //что-нибудь тут сделать
               }
               else return;
  }
Собственно весь код. Нужно, чтобы значения присваиваемые в методе таймера работали и здесь в Мy_method. Или как-то по другому. Просто не знаю как.


Спасибо.
0
Нарушитель
3121 / 2217 / 1095
Регистрация: 14.08.2016
Сообщений: 7,590
20.05.2018, 21:51 8
valueBool1 вообще не объявлена нигде
вызова метода My_method() тоже нету
таймер то тикает, не вызвав метод ты этого и не почувствуешь
1
-24 / 26 / 2
Регистрация: 17.03.2018
Сообщений: 740
20.05.2018, 21:59  [ТС] 9
Извиняюсь, valueBool0.
Как метод вызвать правильно?
0
Нарушитель
3121 / 2217 / 1095
Регистрация: 14.08.2016
Сообщений: 7,590
20.05.2018, 22:07 10
давай по порядку
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
public class Truck
        {
            public short varInt1 { get; set; }
            public Boolean varBool0 { get; set; }
        }
 short valueInt1;
 bool valueBool0;
 private void timer1_Tick(object sender, EventArgs e)
        {
            Truck tr = new Truck(); // на каждом тике создается НОВЫЙ экземпляр
         
          
           valueInt1 = tr.varInt1;       //тут будет значение по умолчанию, всегда
           valueBool0  = tr.varBool0;  //тоже самое
        }
 
 
 private void My_method()
  {
               if (!valueBool1) //тут ты проверяешь значение, а смысл? оно же нигде не меняется
 
               {
                       //что-нибудь тут сделать
               }
               else return;
  }
Цитата Сообщение от Bulky Посмотреть сообщение
Как метод вызвать правильно?
этот метод невозможно вызвать неправильно, вызывай уже хоть как-нибудь, через кнопку,например
1
-24 / 26 / 2
Регистрация: 17.03.2018
Сообщений: 740
20.05.2018, 22:18  [ТС] 11
Ладно бес с ним с эти методом.
Куда "воткнуть" мне оператор условия, чтобы работать дальше с переменными? Мне не нужны события кнопок, таймеров и другой хрени. Просто, чтобы выполнялось условие. До сих пор не пойму, сути. Если мне не нужны события, как сделать, чтобы код исполнялся.
0
Нарушитель
3121 / 2217 / 1095
Регистрация: 14.08.2016
Сообщений: 7,590
20.05.2018, 22:24 12
я не умею объяснять сферических коней в вакууме, распиши что конкретно ты пытаешься сделать, тогда будет понятно куда пихать условия и тд, что бы что-то там сделалось
0
-24 / 26 / 2
Регистрация: 17.03.2018
Сообщений: 740
20.05.2018, 22:27  [ТС] 13
Цитата Сообщение от Diamante Посмотреть сообщение
я не умею объяснять сферических коней в вакууме, распиши что конкретно ты пытаешься сделать, тогда будет понятно куда пихать условия и тд, что бы что-то там сделалось
Я же писал выше. Мне нужно далее работать с этими переменными. Например, работа с оператором условия. Как в коде, выше. Куда "воткнуть" этот код? Не в событие!!!
0
Нарушитель
3121 / 2217 / 1095
Регистрация: 14.08.2016
Сообщений: 7,590
20.05.2018, 22:30 14
что бы кусок кода выполнился, нужно что бы его "вызвали" для выполнения, в формах это делается через события
0
-24 / 26 / 2
Регистрация: 17.03.2018
Сообщений: 740
20.05.2018, 22:34  [ТС] 15
Цитата Сообщение от Diamante Посмотреть сообщение
что бы кусок кода выполнился, нужно что бы его "вызвали" для выполнения, в формах это делается через события
Ну это так пишут в книжках для чайников. Для написания "Калькуляторов", "Конвертеров" и "Саперов". Читал тоже.

Не может быть, чтобы современный, развивающийся и мощный язык не имел той возможности , что я хочу. А хочу я элементарную вещь.
0
Нарушитель
3121 / 2217 / 1095
Регистрация: 14.08.2016
Сообщений: 7,590
21.05.2018, 02:07 16
ну а ты, стало быть, корифей...
действительно, не может такого быть!!!НЕ МОЖЕТ БЫТЬ, ЧТО БЫ, НЕУЧ, РАССКАЗЫВАЛ ВСЕМУ .NET СООБЩЕСТВУ, ЧТО И КАК ДОЛЖНО БЫТЬ!!!ЕСТЬ ТАК, КАК ОНО ЕСТЬ!!!не нравится - иди в assembler
0
-24 / 26 / 2
Регистрация: 17.03.2018
Сообщений: 740
21.05.2018, 08:20  [ТС] 17
Цитата Сообщение от Diamante Посмотреть сообщение
ну а ты, стало быть, корифей...
действительно, не может такого быть!!!НЕ МОЖЕТ БЫТЬ, ЧТО БЫ, НЕУЧ, РАССКАЗЫВАЛ ВСЕМУ .NET СООБЩЕСТВУ, ЧТО И КАК ДОЛЖНО БЫТЬ!!!ЕСТЬ ТАК, КАК ОНО ЕСТЬ!!!не нравится - иди в assembler
А ты чего так напрягся -то? Ну не знаешь как - забей. Береги нервы. Посещай ветки и форумы для гуру, там наверняка не задают подобных вопросов. Тебя же сюда на веревке не тянут, к неучам.
Должны быть какие-то способы, чтобы исполнять код без событий типа button_click и т.д. . Просто не все из Сообщества об этом знают.
0
Эксперт .NET
9340 / 6702 / 1082
Регистрация: 21.01.2016
Сообщений: 25,288
21.05.2018, 11:23 18
Цитата Сообщение от Bulky Посмотреть сообщение
Должны быть какие-то способы, чтобы исполнять код без событий типа button_click и т.д. . Просто не все из Сообщества об этом знают.
Что должно запустить такой код? Он должен постоянно работать, в цикле? Для этого есть отдельные потоки или таймеры.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.05.2018, 11:23

Присвоение переменной одного метода значения из другого метода
Есть метод А(), в которой в переменную int a присваивается 34; И есть метод В(), в которой в...

Видимость элементов класса ограничена границами одного метода
Есть класс, массив элементов этого класса объявляется при инициализации формы. Количество элементов...

Видимость объекта, объявленного в одном методе, из другого метода
Добрый день! В методе A объявляю объект DataSet. Затем из метода А мне нужно многократно...

Видимость переменной
Добрый день. Столкнулся с проблемой видимости переменных в двух методах. Есть код //in this...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.