Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
 Аватар для OdessaNA
19 / 19 / 6
Регистрация: 10.01.2011
Сообщений: 241

Не статические поля в статическом методе класса

11.01.2014, 19:48. Показов 4767. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, друзья.
Подскажите пожалуйста как "обойти запрет" использования не статических полей в статическом методе:

C#
1
2
3
4
5
6
7
8
class MC
{
    int x = 1;
    public static void Show()
    {
        Conslole.WriteLine(x); // естественно будет ошибка
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.01.2014, 19:48
Ответы с готовыми решениями:

Можно ли получить текущий класс объекта в статическом методе родительского класса?
Здравствуйте, можно ли получить текущий класс объекта в статическом методе родительского класса?

Архитектура приложения и статическая переменная в статическом методе шаблонного класса
Добрый день. Я работаю над классом, часть кода которого должна вызываться ещё до вызова main(), из-за чего он фактически следует паттерну...

Как вызвать статические методы из класса ConsoleReader в методе Main?
Задание: Сделать класс ConsoleReader, у которого будут 4 статических метода: String readString() – читает с клавиатуры строку int...

9
 Аватар для vialet
57 / 57 / 11
Регистрация: 04.03.2010
Сообщений: 244
11.01.2014, 19:53
передать поле как аргумент в статический метод
0
 Аватар для OdessaNA
19 / 19 / 6
Регистрация: 10.01.2011
Сообщений: 241
11.01.2014, 21:23  [ТС]
vialet, покажите, пожалуйста, как это "лаконично" реализовать.
0
 Аватар для akafeanor
60 / 59 / 15
Регистрация: 04.05.2010
Сообщений: 161
11.01.2014, 21:54
Я что то не очень понимаю...вы можете использовать метод Show, не создав экземпляр класса MC. Что делать программе если нет экземпляра класса MC, в котором не проинициализирована переменная х , а вы вызываете статический метод Show (MC.Show()). Откуда программа возьмет значение переменной x? Мне кажется лучше использовать статическую переменную х.
0
 Аватар для OdessaNA
19 / 19 / 6
Регистрация: 10.01.2011
Сообщений: 241
11.01.2014, 22:33  [ТС]
akafeanor, в том-то и вопрос!
Есть не статическое инициализированное при объявлении поле.
Можно ли его (не статическое поле), при необходимости, одновременно использовать в статическом и не статическом методах?
0
 Аватар для akafeanor
60 / 59 / 15
Регистрация: 04.05.2010
Сообщений: 161
11.01.2014, 22:47

Не по теме:

Вот скажи мне как компилятор компилятору



Что делать если в памяти нет объекта класса MC, т.е. не проинициализирована переменная х, а программист в своём коде написал MC.Show()?

Не по теме:

Вот он и ругается.

1
8 / 8 / 2
Регистрация: 14.01.2012
Сообщений: 60
11.01.2014, 23:08
Вызывать не статическое поле из статического метода? Нет, не надо так делать.
Если появляется такая потребность, это значит, что класс не правильно спроектирован.
0
 Аватар для OdessaNA
19 / 19 / 6
Регистрация: 10.01.2011
Сообщений: 241
11.01.2014, 23:43  [ТС]
Snowy, спасибо, я это понимаю.
Мне просто интересно - есть ли какие-то "хаки", что бы это реализовать?
0
 Аватар для Anklav
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
12.01.2014, 01:21
Экземпляров класса может быть много, а может и не быть.
Что вы будете делать если экземпляров нет, и что вы будете делать если их несколько?

Подозреваю что так:
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
[STAThread]
static void Main()
{
    SomeClass sc = new SomeClass(500);
    sc = new SomeClass(200);
    sc = new SomeClass(100);
    SomeClass.Show();
 
    Console.ReadLine();
}
 
    class SomeClass
    {
        static SomeClass()
        {
            instances = new List<SomeClass>();
        }
 
        private static List<SomeClass> instances;
 
        private int x;
 
        public SomeClass(int value)
        {
            instances.Add(this);
            x = value;
        }
 
        public static void Show()
        {
            if (instances.Count == 0)
                Console.WriteLine("Empty");
 
            foreach (SomeClass instance in instances)
            {
                Console.WriteLine(instance.x);
            }
        }
    }
0
 Аватар для OdessaNA
19 / 19 / 6
Регистрация: 10.01.2011
Сообщений: 241
12.01.2014, 10:27  [ТС]
Anklav, спасибо, натолкнули на мысль:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class ExcTest
    {
        int var = 1;
        public static void method()
        {
            ExcTest obj = new ExcTest();
            Console.WriteLine(obj.var);
        }
    }
    class Program
    {       
        static void Main(string[] args)
        {
            ExcTest.method();
        }
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.01.2014, 10:27
Помогаю со студенческими работами здесь

Статические поля класса
Не подскажете как инициализировать статический массив? Но чтобы я сам мог ввести этот массив.

Статические поля класса
class mi { int a,b; public: mi(int a, int b) : a(a),b(b) {} void sw() { std::cout&lt;&lt;a&lt;&lt;&quot; - &quot;&lt;&lt;b&lt;&lt;std::endl; } ...

Указатели на статические поля класса C++
Необходимо создать класс в public поле которого необходимо создать указатели на все элементы данного класса, при попытке получить адрес...

Qt creator статические поля класса
Я создал в классе статическую переменную типа int static float speed; И когда я из методов этого класса пытаюсь...

Как правильно инициализировать статические поля класса
Здравствуйте, уважаемые форумчане! Столкнулся с проблемой, решение нашел, но идею еще нужно понять. //MyClass.h class MyClass ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru