如何在C#库中创建全局对象

如何在C#库中创建全局对象,c#,dll,initialization,globals,C#,Dll,Initialization,Globals,可能重复: 我有一个图书馆 库是否可以具有全局对象/变量 运行主项目时,这些对象的初始化方法是否可以从库中自动执行,或者我是否必须将其设置为静态方法并从主项目中运行 可以将类上的public用作全局对象/变量 您可以在类的中初始化静态属性,该类将在第一次访问属性之前直接调用 库是否可以具有全局对象/变量 是的,c#可以有静态类、静态成员。但在类之外不能存在任何变量 运行主项目时,这些对象的初始化方法是否可以从库中自动执行,或者我是否必须将其设置为静态方法并从主项目中运行 可以内联初始化,也可以

可能重复:

我有一个图书馆

  • 库是否可以具有全局对象/变量
  • 运行主项目时,这些对象的初始化方法是否可以从库中自动执行,或者我是否必须将其设置为静态方法并从主项目中运行
  • 可以将类上的public用作全局对象/变量

    您可以在类的中初始化静态属性,该类将在第一次访问属性之前直接调用

    库是否可以具有全局对象/变量

    是的,c#可以有静态类、静态成员。但在类之外不能存在任何变量

    运行主项目时,这些对象的初始化方法是否可以从库中自动执行,或者我是否必须将其设置为静态方法并从主项目中运行

    可以内联初始化,也可以在静态构造函数中进行初始化。在首次访问任何静态成员或实例成员之前调用它们。如果未访问静态成员且未创建实例,则有可能不会进行初始化

    在C#中,我总是使用静态类来提供此功能。本文详细介绍了静态类,但简单地说,它们只包含静态成员,不进行实例化——本质上它们是通过类名(和名称空间)访问的全局函数和变量

    下面是一个简单的例子:

    public static class Globals
    {
        public static string Name { get; set; }
        public static int aNumber {get; set; }
        public static List<string> onlineMembers = new List<string>();
    
         static Globals()
         {
            Name = "starting name";
            aNumber = 5;
         }
    }
    
    静态对象仅“创建”一次。因此,应用程序使用对象的任何地方都将来自同一位置。根据定义,它们是全球性的。要在多个位置使用此对象,只需引用对象名称和要访问的元素



    您可以将静态成员添加到任何类中,它们将是全局可用的,但我认为为全局成员保留一个位置是更好的设计。

    全局状态是邪恶的。它使得程序很难推理和调试。@Oded,没错,但有时你无法避免它——因此,使其清晰透明是非常重要的。
    Console.WriteLine(Globals.Name);
    Globals.onlineMemeber.Add("Hogan");