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

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

09.03.2012, 11:00. Показов 3872. Ответов 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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru