我有一个 C# 库。
- 库可以有全局对象/变量吗?
- 运行主项目时,是否可以从库中自动执行这些对象的初始化方法,还是必须将其设为静态方法并从主项目运行?
我有一个 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# 可以有静态类、静态成员。但是在类之外不能存在任何变量。
运行主项目时,是否可以从库中自动执行这些对象的初始化方法,还是必须将其设为静态方法并从主项目运行?
您可以内联初始化,也可以在静态构造函数中进行初始化。在首次访问任何静态成员或实例成员之前调用它们。如果未访问静态成员并且未创建实例,则有可能不会进行初始化。