Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
 Аватар для ayrat_net
84 / 84 / 12
Регистрация: 12.01.2011
Сообщений: 1,049

Как получить доступ к переменной из блока if

09.03.2012, 11:00. Показов 3887. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Столкнулся со странной проблемой, с которой нигде и никогда не сталкивался при других обстоятельствах.

Суть в том, что есть метод например

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private void cdgvTickers_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            
            if (e.ColumnIndex == 0)
            {
                [B]bool lo_F = false;[/B]
                try
                {
                    if (Convert.ToInt32(e.Value) >= -2147483648)
                    {
                        lo_F = true;
                    }
                    else
                        lo_F = false;
                }
                catch
                {
                    lo_F = false;
                }
            }
     }
Все работает нормально то есть lo_F изменяется в процессе работы метода


Но следующий код не будет присваивать переменной lo_F значение оно будет оставаться заданной по умолчанию

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private void cdgvTickers_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            [B]bool lo_F = false;[/B]
            if (e.ColumnIndex == 0)
            {
                
                try
                {
                    if (Convert.ToInt32(e.Value) >= -2147483648)
                    {
                        lo_F = true;
                    }
                    else
                        lo_F = false;
                }
                catch
                {
                    lo_F = false;
                }
            }
     }
Почему так и как быть помогите пожалуйста
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.03.2012, 11:00
Ответы с готовыми решениями:

Имя переменной как переменная. Как получить доступ к такой переменной?
Подскажите как получать данные из переменной, если ее имя вычисляется? И соответственно как потом возвращать в подобную переменную данные?...

Как получить доступ к параметрам блока Step в m-файле
Добрый вечер, уважаемые форумчане) Подскажите пожалуйста что нужно прописать в m-файле,чтобы получить доступ к параметрам блока Step,чтобы...

Как получить доступ к переменной?
не могу получить значение переменной username

9
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
09.03.2012, 11:07
Цитата Сообщение от ayrat_net Посмотреть сообщение
Но следующий код не будет присваивать переменной lo_F значение оно будет оставаться заданной по умолчанию
Может тестил на разных значениях в DataGrid? Вроде код идентичный, только объявление переменной в другой области видимости и всё.
1
 Аватар для ayrat_net
84 / 84 / 12
Регистрация: 12.01.2011
Сообщений: 1,049
09.03.2012, 11:16  [ТС]
А как назначать значение переменной из другой области видимости? Например как в моем случаи. Дело в том, что если переменная в другой области видимости ей не получается присвоить значение, она остается такой же какой была по умолчанию
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
09.03.2012, 11:45
не пробовали lo_F вытащить за пределы метода
C#
1
2
3
4
bool lo_F = false;
private void cdgvTickers_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
}
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
09.03.2012, 12:15
А так у тебя походу такая ситуация:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    public partial class Form1 : Form
    {
        bool m = false;
 
        public Form1()
        {
            InitializeComponent();
            Some();
            Text = m.ToString();
        }
 
        public void Some()
        {
            bool m = false;
            m = true;
        }
    }
У тебя и глобально есть переменная и локально в методе. Иначе я не знаю, что ещё может мешать присвоить значение переменной.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
09.03.2012, 12:51
А где вы хотите потом эту переменную использовать? А то в приведенном вами коде она создается, но нигде не проверяется, потому неясно зачем она там вообще нужна.
1
 Аватар для ayrat_net
84 / 84 / 12
Регистрация: 12.01.2011
Сообщений: 1,049
09.03.2012, 14:22  [ТС]
Внутри этого метода вот в чем парадокс
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
09.03.2012, 14:33
Можете привести полный код метода?
Ну или хотя бы строчки где используется флаг, но с сохрпнением области видимости (фигурных скобок)
1
 Аватар для ayrat_net
84 / 84 / 12
Регистрация: 12.01.2011
Сообщений: 1,049
09.03.2012, 15:20  [ТС]
По сути это и есть полный код метода проблема в выделенном коде

В этом случаи lo_A - меняет свое значение
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private void cdgvTickers_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (e.ColumnIndex == 0)
            {
                bool lo_A = TICKERSTABLE.IDCorrectInput(e.Value);
 
                if (lo_A == true)
                {
                    cdgvTickers.Rows[e.RowIndex].Cells[0].Style.BackColor = Color.White;
                }
                else
                {
                    cdgvTickers.Rows[e.RowIndex].Cells[0].Style.BackColor = Color.AntiqueWhite;
                    cdgvTickers.Rows[e.RowIndex].Cells[0].Value = "";
                }
            }
В этом случаи lo_A - он постоянен всегда =false то есть работает не нормально
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void cdgvTickers_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            bool lo_A = TICKERSTABLE.IDCorrectInput(e.Value);
            if (e.ColumnIndex == 0)
            {
                if (lo_A == true)
                {
                    cdgvTickers.Rows[e.RowIndex].Cells[0].Style.BackColor = Color.White;
                }
                else
                {
                    cdgvTickers.Rows[e.RowIndex].Cells[0].Style.BackColor = Color.AntiqueWhite;
                    cdgvTickers.Rows[e.RowIndex].Cells[0].Value = "";
                }
            }
Проблема в том данная переменная по разному работает в первом и во втором.методе. вот это меня и поражает
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
10.03.2012, 11:29
Если вы привели полный код метода, то я вижу только две причины такого поведения во втором случае:
1. Происходит создание флага вне зависимости от индекса форматируемой ячейки, что может не соответствовать требованиям приложения.
2. В методе IDCorrectInput имеется побочный эффект, который изменяет состояние объекта и влияет на результат последующих вызовов этого метода для тех же самых значений.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.03.2012, 11:29
Помогаю со студенческими работами здесь

Как получить доступ к переменной?
Делаю игру(гонки),начал писать скрипт для спидометра Speedemeter(C#),почти закончил,но понял,что не могу получить доступ к переменной...

Как получить доступ к переменной?
Дано натуральное число n. Выяснить, сколько положительных элементов содержит матрица A размерности n*n, если: а) a=sin(i+j/2) б)...

Как получить доступ к переменной класса?
есть класс формы с публичными перменными public ref class Form1 : public System::Windows::Forms::Form { public: String...

Как разумно получить доступ к приватной переменной
Есть в классе приватная переменная clientName. Мне нужно защитить ее так, чтобы для внешних классов она была только для чтения. Не...

Как получить доступ к переменной из другого метода с++
Хочу чтоб вводились дни по месяцам, например если февраль то не может быть в месяце 30 дней. Сделал функцию которая будет это возвращать,...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru