我想设置以下public var:
var collection = new Dictionary<string, Statistics>();
Run Code Online (Sandbox Code Playgroud)
我希望能够通过我的应用程序使用相同的集合,因此我希望在应用程序启动时在顶部创建它.
我该怎么办?
C#中没有全局变量的概念.你总是必须在某个类/范围内声明变量.
你可以做的是通过public修饰符使它可以访问,比如属性(比方说).
只是一个想法:
public class Shared
{
public Dictionary<string, Statistics> CollectionDic {get;set;}
public Shared() {
CollectionDic = new Dictionary<string, Statistics>();
}
}
Run Code Online (Sandbox Code Playgroud)
您可以访问它之后:
var shared = new Shared();
shared.CollectionDic.Add(..)
...
Run Code Online (Sandbox Code Playgroud)
您必须自己锻炼,以满足您的确切需求.
您可以将其创建为公共类中的公共静态字段或属性(也可以是静态的):
public class Variables
{
public static Dictionary<string, Statistics> collection = new Dictionary<string, Statistics>();
}
Run Code Online (Sandbox Code Playgroud)
然后在代码中访问它:
Variables.collection.Add(...);
Run Code Online (Sandbox Code Playgroud)
请注意,这不是线程安全的方法。因此,如果您打算在多线程应用程序中使用静态字典,最好使用静态方法,以线程安全的方式包装字典(如 Jon Skeet 所述)或使用线程安全的集合,例如ConcurrentDictionary。