Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2014, 23:54   #1
IT-Lopata
7 - классник
Форумчанин
 
Аватар для IT-Lopata
 
Регистрация: 27.03.2014
Сообщений: 181
По умолчанию Локальная переменная которая сохраняет свое значение между вызовами метода

боюсь соврать но вроде бы это статическая переменная, в С# их разве нет ? я не хочу городить еще одно поле в классе и засорять пространство имен, мне просто нужна локальная статическая переменная.

Мне надо что бы локальная переменная Z циклически менялась в диапазоне 0-15;

Код:
        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            int cx = e.X / 32;
            int cy = e.Y / 32;
            static int z = 0;// ошибка

            if (e.Delta) 
            {

                m.SrollBrush(z);
            }


        public void SrollBrush(int i) 
        {
            int x = i % 4;
            int y = i - (x * 4);

            t.DrawImage(BlockTexture, new Rectangle(0, 0, 32, 32), new Rectangle(x*32, x*32, 32, 32), GraphicsUnit.Pixel);
            
        }
IT-Lopata вне форума Ответить с цитированием
Старый 05.04.2014, 07:41   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
статическая переменная, в С# их разве нет ?
C# не поддерживает статические локальные переменные по типу C++.
Статические поля класса в C# не доступны для экземпляра класса. Поэтому и ошибка.
Подробнее об этом можно прочитать, например, здесь.
Streletz вне форума Ответить с цитированием
Старый 05.04.2014, 10:24   #3
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
Статические поля класса в C# не доступны для экземпляра класса.
это вы не подумали
eval вне форума Ответить с цитированием
Старый 05.04.2014, 11:04   #4
IT-Lopata
7 - классник
Форумчанин
 
Аватар для IT-Lopata
 
Регистрация: 27.03.2014
Сообщений: 181
По умолчанию

Цитата:
C# не поддерживает статические локальные переменные
печально же, а как люди тогда обходятся без них? городить поле в классе?
IT-Lopata вне форума Ответить с цитированием
Старый 05.04.2014, 11:11   #5
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

а какая разница?
eval вне форума Ответить с цитированием
Старый 05.04.2014, 11:20   #6
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
городить поле в классе?
А, что такого особенного в дополнительном поле в классе? Если, конечно, не секрет, в чём цель этой "минимизации количества полей"?
Streletz вне форума Ответить с цитированием
Старый 05.04.2014, 11:21   #7
IT-Lopata
7 - классник
Форумчанин
 
Аватар для IT-Lopata
 
Регистрация: 27.03.2014
Сообщений: 181
По умолчанию

Цитата:
а какая разница?
ну есть разница, то ли она у тебя в интел сенс постоянно крутиться и на глаза попадается - int coutForLocalFormMethodScrollBrush то ли все это в том методе внутри сидит и не торчит ни капли, то есть это часть внутренней организации работы некоторого метода зачем мне внешне торчащие костыли в интерфейсе самого класса.
IT-Lopata вне форума Ответить с цитированием
Старый 05.04.2014, 11:35   #8
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

А зачем обязательно статик то? Какие то аргументы странные немного. Вы пишете программу для того чтобы она красиво выглядела в интеллисенс или чтобы она как положено исполняла задачу?
А у класса поля можно помечать privat protected и так далее. В конце концов можно описать интерфейс класса и вывести в падлик только те методы и поля которые нужно видеть снаружи.
Мне кажется на этапе постановки задачи явно недоработка.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 05.04.2014, 12:04   #9
mrMeerkat
Следопыт
Форумчанин
 
Аватар для mrMeerkat
 
Регистрация: 26.04.2012
Сообщений: 307
По умолчанию

to IT-Lopata
обьявляете переменную как statik - и она действительно будет статик в этом пространстве имен.
Если нужна локальная переменная в классе - обьявите ее со спецификатором доступа readonly(в конструкторе класса инициализируйте ее).

//может не по теме, но изголодался я по проганью на шарпе.
С Баша:Быть ленивым, глупым, жадным, да и просто редкостным гандоном и мудаком по жизни номально, а вот если ты матом ругаешься-то это да, ужасно и достойно общественного порицания.

Последний раз редактировалось mrMeerkat; 05.04.2014 в 12:10.
mrMeerkat вне форума Ответить с цитированием
Старый 05.04.2014, 15:33   #10
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Можно почитать про yield return - с его помощью можно реализовать подобную функциональность
phomm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Неинициалированная локальная переменная Sk1lloK Visual C++ 6 25.12.2012 22:36
как ячейка может прибавить свое значение к значениям других ячеек oldjoe Microsoft Office Excel 3 20.11.2010 09:25
программа, которая сохраняет веб страницы раз в час на сайте в определённой папке SeregaKo Общие вопросы Delphi 7 24.07.2008 16:10
программа которая сохраняет текст StringGrid без диалогов KSP БД в Delphi 2 19.09.2007 18:49