A global variable can be useful, but it may lead to problems that are hard to debug. Global variables can cause errors in software development.
Many programs can benefit from global variables if used in a controlled manner. We use the static
keyword. A separate static
class
can also be used.
The static
keyword describes something that is part of a type, not an instance of the type. This word was chosen for historical reasons—it was used in C and C++.
GlobalVar
class
, which contains the global variables in a static
class
, and Program
, which uses the global class
.GlobalString
is a public global variable. You must assign its value inline with its declaration at the class
declaration space.GlobalValue
is a public static
property with get and set accessors. This is an access routine of a backing store.using System; /// <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; } class Program { static void Main() { // Write global constant string. Console.WriteLine(GlobalVar.GlobalString); // Set global integer. GlobalVar.GlobalValue = 400; // Set global boolean. GlobalVar.GlobalBoolean = true; // Write the 2 previous values. Console.WriteLine(GlobalVar.GlobalValue); Console.WriteLine(GlobalVar.GlobalBoolean); } }Important Text 400 True
Global variables are used most effectively when accessed through special methods called access routines. You can use access routines in nearly any programming language.
Static fields can introduce problems when using multithreading, which is used extensively in websites. An access routine could provide locking using the lock-statement.
BackgroundWorker
threads.We used global variables by adding a static
class
with constants, properties and public fields. You can also define methods with parameters to access the static
variables.