Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Глобальые переменные в C# 
:(
    Опции темы
slavaentp
Дата 29.11.2009, 20:52 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 17.6.2008

Репутация: нет
Всего: -1



Насколько я понимаю, сабжа не существует. А можно ли их всё-таки как-то внедрить? Мне гораздо удобнее создавать переменные в тот момент, когда появилась в них потребность, а не лезть вверх в класс и прописывать их там.
PM MAIL   Вверх
Exai1e
Дата 29.11.2009, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 908
Регистрация: 3.12.2006
Где: Moscow

Репутация: 4
Всего: 30



slavaentp, нет они не предусмотрены) а зачем тебе лезть на верх класса и прописывать их там ? можно прописать их над методом, в котором они понадобились


--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
slavaentp
Дата 29.11.2009, 21:21 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 17.6.2008

Репутация: нет
Всего: -1



Цитата(Exai1e @ 29.11.2009,  21:06)
slavaentp, нет они не предусмотрены) а зачем тебе лезть на верх класса и прописывать их там ? можно прописать их над методом, в котором они понадобились

Не совсем понимаю, что ты имеешь в виду.

Смотри, предположим у нас 10 методов. Я ревизую программу и понимаю, что в четвёртом из них очень хорошо бы создать переменную, которую мы будем ещё использовать в трёх методах(а в остальных она не нужна).

Что ты имеешь в виду под "прописать их под методом, в котором она понадобилась"?

Добавлено @ 21:25
А, понял. Да, действительно, это лучше, чем лезть вверх класса.

Но всё ещё не идеально smile В идеале - создавать ровно в том месте, где понадобилась. Можно ли это осуществить как-то?

Это сообщение отредактировал(а) slavaentp - 29.11.2009, 21:26
PM MAIL   Вверх
DenWPF
Дата 29.11.2009, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



блин ну бери и создавай, не забывай о облости видимости...

а глобальных переменых нету, но есть заменитель статические классы и переменные.
PM MAIL   Вверх
Exai1e
Дата 29.11.2009, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 908
Регистрация: 3.12.2006
Где: Moscow

Репутация: 4
Всего: 30



Ну как сказал DenWPF, static переменные, как вариант.
Цитата

Глобальные переменные

Семантическая нагрузка в Delphi - формирование объектов программы (какпримитивных типов, так и сложных), доступных из любого места кода и, возможно,изменяемых в процессе выполнения программы.

Код

    var A: integer;
    B := A;
    A := 1;


Семантический эквивалент в C# - статические поля классов.
    
Код

// класс-обертка
    class Globals {
   // определение статических переменных
   // инициализация по умолчанию = 0
   public static int A;
   // одновременные описание и инициализация
   public static int B = 1;
    }
    // использование статических переменных
    int a = Globals.A;
    Globals.A = 1;
    int b = Globals.B;
    Globals.B = 1;


© gotdotnet

Это сообщение отредактировал(а) Exai1e - 29.11.2009, 21:40


--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
slavaentp
Дата 29.11.2009, 22:20 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 17.6.2008

Репутация: нет
Всего: -1



За статические переменные спасибо, а как с ними обращаться, если статические переменные - список?

Код

Class Globals{

public static List<string> strings = new List<string>();

}
class Program
{
...
Globals.strings.Add("lala");
...
}

Пишет ошибку: "'System.Collections.Generic.List<int>' does not contain a definition for 'strings' and no extension method 'strings' accepting of first argument of type 'System.Collections.Generic.List<int>' could be found  (are you missing a using directive or an assembly reference?)

Это сообщение отредактировал(а) slavaentp - 29.11.2009, 22:24
PM MAIL   Вверх
Exai1e
Дата 29.11.2009, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 908
Регистрация: 3.12.2006
Где: Moscow

Репутация: 4
Всего: 30



slavaentp, все номрально работается =)
Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication2
{
    public class MyClass
    {
        public static List<string> someList = new List<string>();

    }
}


Код

            Console.WriteLine(MyClass.someList.Count);
            MyClass.someList.Add("Hello, i am item");
            Console.WriteLine(MyClass.someList.Count);
            Console.ReadLine();


Добавлено через 3 минуты и 5 секунд
вы на текст ошибки внимательно пасматрите =)



--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
Экскалупатор
Дата 29.11.2009, 22:54 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 5
Всего: 24



Цитата

В идеале - создавать ровно в том месте, где понадобилась


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

Добавлено через 39 секунд
Цитата

Смотри, предположим у нас 10 методов. Я ревизую программу и понимаю, что в четвёртом из них очень хорошо бы создать переменную, которую мы будем ещё использовать в трёх методах(а в остальных она не нужна).


если нормально продумать структуру классов, то обычно таких проблем не возникает...
PM MAIL ICQ   Вверх
DenWPF
Дата 29.11.2009, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



явно, только перешел на ООП.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1135 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.