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

本文关键字:创建 全局 对象 | 更新日期: 2023-09-27 17:52:33

可能重复:
使数据(可能在运行时更改(可供整个应用程序访问的最佳方法?

我有一个C#库。

  1. 库可以有全局对象/变量吗
  2. 当运行主项目时,这些对象的初始化方法可以从库中自动执行吗?还是必须将其设置为静态方法并从主项目中运行

如何在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;
     }
}

注意,我还使用了一个静态初始值设定项,它保证在使用/调用任何成员或函数之前的某个时刻运行。

在你的程序的其他地方,你可以简单地说:

Console.WriteLine(Globals.Name);
Globals.onlineMemeber.Add("Hogan");

静态对象只"创建"一次。因此,无论应用程序在哪里使用,对象都将来自同一位置。根据定义,它们是全球性的。要在多个位置使用此对象,只需引用对象名称和要访问的元素即可。


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

您可以将类的公共静态属性用作全局对象/变量。

您可以在类的静态构造函数中初始化静态属性,该构造函数将在首次访问属性之前直接调用。

库可以有全局对象/变量吗?

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

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

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

与静态初始化程序相关的有趣文章