Используйте значение bool через все приложение c # mvc [duplicate]

Указатель чтения перемещается после последнего прочитанного байта / символа. Используйте метод seek() для перемотки указателя чтения к началу.

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

6 ответов

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

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();

Вам не нужно создавать экземпляр класса; на самом деле вы не можете, потому что это статично. new Просто используйте его напрямую. Все члены внутри статического класса также должны быть статическими. Строка Prefix не помечена как статическая, поскольку 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;
98
ответ дан John K 18 August 2018 в 17:37
поделиться
  • 1
    +1 для элегантного решения - приятно, мне это нравится. – SoftwareGeek 19 March 2010 в 00:01

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

0
ответ дан Ameer Deen 18 August 2018 в 17:37
поделиться

Вы можете создать базовый класс в своем приложении, которое наследуется от System.Web.UI.Page. Пусть все ваши страницы наследуются от вновь созданного базового класса. Добавьте свойство или переменную в ваш базовый класс с предполагаемым модификатором доступа, чтобы он был доступен со всех ваших страниц в приложении.

3
ответ дан Ghyath Serhal 18 August 2018 в 17:37
поделиться
/// <summary>
/// Contains global variables for project.
/// </summary>
public static class GlobalVar
{
/// <summary>
/// Global variable that is constant.
/// </summary>
public const string GlobalString = "Important Text";

/// <summary>
/// Static value protected by access routine.
/// </summary>
static int _globalValue;

/// <summary>
/// Access routine for global variable.
/// </summary>
public static int GlobalValue
{
get
{
    return _globalValue;
}
set
{
    _globalValue = value;
}
}

/// <summary>
/// Global static field.
/// </summary>
public static bool GlobalBoolean;
}
0
ответ дан Morteza 18 August 2018 в 17:37
поделиться

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

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

4
ответ дан Ron Klein 18 August 2018 в 17:37
поделиться
  • 1
    является ли это недостатком только для глобальных переменных? или для кеша? – scatman 15 March 2010 в 07:44
  • 2
    AFAIK, общедоступные методы объекта Cache, который поставляется с приложением ASP.NET, являются потокобезопасными. Но взгляните на документацию ... – Ron Klein 15 March 2010 в 10:30

Просто объявите переменную в начале класса.

, например. для строковой переменной:

public partial class Login : System.Web.UI.Page
{
    public string sError;

    protected void Page_Load(object sender, EventArgs e)
    {
         //Page Load Code
    }
-3
ответ дан Sagar Patil 18 August 2018 в 17:37
поделиться
Другие вопросы по тегам:

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