Tom*_*zzo 106
在C#你无法定义真正的全局变量(在某种意义上它们不属于任何类).
话虽这么说,我所知道的模仿这个特征的最简单的方法是使用static class如下:
public static class Globals
{
    public const Int32 BUFFER_SIZE = 512; // Unmodifiable
    public static String FILE_NAME = "Output.txt"; // Modifiable
    public static readonly String CODE_PREFIX = "US-"; // Unmodifiable
}
然后,您可以在代码中的任何位置检索已定义的值(前提是它是相同的一部分namespace):
String code = Globals.CODE_PREFIX + value.ToString();
为了处理不同的命名空间,您可以:
Globals该类而不将其包含在特定的namespace(以便它将被放置在全局应用程序命名空间中);namespace.Fed*_*gui 70
在C#中没有全局变量这样的东西.期.
如果需要,您可以拥有静态成员:
public static class MyStaticValues
{
   public static bool MyStaticBool {get;set;}
}
Dee*_*101 21
首先检查你是否真的需要一个全局变量,而不是考虑你的软件架构而公然使用它.
我们假设它通过了测试.根据使用情况,Globals很难根据竞争条件和许多其他"坏事"进行调试,最好从你准备处理这些坏事的角度来处理它们.所以,
static类中(用于可管理性).这类课程的基本大纲是:
public class Globals
{
    private static bool _expired;
    public static bool Expired 
    {
        get
        {
            // Reads are usually simple
            return _expired;
        }
        set
        {
            // You can add logic here for race conditions,
            // or other measurements
            _expired = value;
        }
    }
    // Perhaps extend this to have Read-Modify-Write static methods
    // for data integrity during concurrency? Situational.
}
从其他类(在相同的命名空间内)的用法
// Read
bool areWeAlive = Globals.Expired;
// Write
// past deadline
Globals.Expired = true;
一个有用的功能是 using static
正如其他人所说,您必须为全局变量创建一个类:
public static class Globals {
    public const float PI = 3.14;
}
但是你可以像这样导入它,以便不再在它的静态属性前面写类名:
using static Globals;
[...]
Console.WriteLine("Pi is " + PI);
| 归档时间: | 
 | 
| 查看次数: | 348094 次 | 
| 最近记录: |