c#中的静态Application变量是个坏主意

时间:2015-05-29 08:36:47

标签: c#

我有两个课程

setSort()

我需要在整个项目中保留一些常用数据。为此,我使用了一个应用程序变量并保存了 public class DemoProperty { public int ID { get; set; } public string Title { get; set; } public string MenuCode { get; set; } public string OriginalURL { get; set; } } public class MyCommonProperties { private static List<DemoProperty> _DemoList; public static List<DemoProperty> DemoList { get { return _DemoList; } set { _DemoList = value; } } }

Global.asx

Dictionary<string,List<DemoProperty>>

实际上我对它的缺点了解得更多。如果这是一个坏主意,请你建议我一个好主意。

1 个答案:

答案 0 :(得分:-2)

如果您需要保存静态数据,可以使用以下内容:

public static class StaticVals
{
    public static Dictionary<string,string> StaticDictionary;
}

正如我所理解的,你传递的是一个对象的引用,你可以在其中保存运行时数据。更简单的方法是使用属性或使用static关键字的类:这样可以确保此特定类或属性只在您的应用程序中存在一次。

您可以在此处阅读更多内容:http://www.codeproject.com/Articles/15269/Static-Keyword-Demystified

不使用static类的替代方法,例如,如果需要多个配置,则使用单例模式。此模式确保只存在给定类型的单个实例。关于单身人士的更多信息:http://www.oodesign.com/singleton-pattern.html

这种模式的一个简单例子是

public class StaticVals
{
    private static StaticVals _instance;
    public static StaticVals Instance
    {
        get
        {
            if (_instance == null)
                _instance = new StaticVals();
            return _instance;
        }
    }
    public Dictionary<string, string> StaticDictionary;
}

注意static关键字如何从属性和类中消失,这意味着您可以像任何普通对象一样为测试目的创建对象。您可以使用

以“普通”代码获取实例
StaticVals.Instance.StaticDictionary