Глобальные переменные в c#.net

Как я могу установить глобальную переменную в веб-приложении C#?

То, что я хочу сделать, должно установить переменную на странице (основная страница, возможно) и получить доступ к этой переменной от любой страницы.

Я хочу не использовать ни кэш, ни сессии.

Я думаю, что должен использовать global.asax. Какая-либо справка?

44
задан JavaAndCSharp 4 December 2011 в 16:23
поделиться

3 ответа

Используйте общедоступный статический класс и получайте к нему доступ из любого места.

public static class MyGlobals {
    public const string Prefix = "ID_"; // cannot change
    public static int Total = 5; // can change because not const
}

используется так, на главной странице или где-либо еще:

string strStuff = MyGlobals.Prefix + "something";
textBox1.Text = "total of " + MyGlobals.Total.ToString();

Вам не нужно создавать экземпляр класса; на самом деле вы не можете, потому что он статичен. новый Просто используйте его напрямую. Все члены внутри статического класса также должны быть статическими. Префикс строки не помечен как статический, потому что const неявно статичен по своей природе.

Статический класс может быть где угодно в вашем проекте. Он не обязательно должен быть частью Global.asax или какой-либо конкретной страницы, потому что он «глобальный» (или, по крайней мере, настолько близко, насколько мы можем приблизиться к этой концепции в объектно-ориентированных терминах).

Вы можете сделать столько статических классы, как вам нравится, и назовите их как хотите.


Иногда программисты любят группировать свои константы, используя вложенные статические классы. Например,

public static class Globals {
    public static class DbProcedures {
        public const string Sp_Get_Addresses = "dbo.[Get_Addresses]";
        public const string Sp_Get_Names = "dbo.[Get_First_Names]";
    }
    public static class Commands {
        public const string Go = "go";
        public const string SubmitPage = "submit_now";
    }
}

и обращайтесь к ним так:

MyDbCommand proc = new MyDbCommand( Globals.DbProcedures.Sp_Get_Addresses );
proc.Execute();
//or
string strCommand = Globals.Commands.Go;
103
ответ дан 26 November 2019 в 21:51
поделиться

Вы можете создать переменную с областью приложения

0
ответ дан 26 November 2019 в 21:51
поделиться

Второй ответ jdk: любой публичный статический член любого класса вашего приложения может рассматриваться как «глобальная переменная».

Однако обратите внимание, что это приложение ASP.NET и, как таковое, это многопоточный контекст для ваших глобальных переменных. Следовательно, вы должны использовать некоторый механизм блокировки при обновлении и / или чтении данных в / из этих переменных. В противном случае вы можете получить ваши данные в поврежденном состоянии.

6
ответ дан 26 November 2019 в 21:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: