如果我有只有一个静态变量的类 - 我应该将此类声明为静态吗?

时间:2014-04-19 08:55:48

标签: c# .net

这是我的班级如何抓住我上次访问的路径:

public class LastPath
{
    private static string _lastPath;

    public static string lastPath
    {
        get { return _lastPath; }
        set { _lastPath = value; }
    }
}

4 个答案:

答案 0 :(得分:2)

我会说你这样做:

public static class LastPath
{
    public static string lastPath
    {
       get;set;
    }
}

您应该将其声明为static,因为静态类无法实例化,而非静态类可以实例化,这是不需要的。

答案 1 :(得分:2)

使类静态并将公共属性设置为静态,并且您已完成,如下所示:

public static class LastPath
{

    public static string lastPath { get;set;}

}

答案 2 :(得分:2)

如果一个类的所有成员都是静态的,并且您的类不是要实例化的,那么它应该是static

在这种情况下,您的课程符合上述规则或指南,因此将其标记为static会有意义,因为您没有任何实例成员。

LastPath path = new LastPath();
path.????//  Nothing to access, so prevent instantiation by marking class static.

据说如果你班上只有一个领域而没有任何方法我认为你可能根本不需要一个班级,只需将它重构到其他有意义的班级。

答案 3 :(得分:1)

首先 - 创建用于保存单个变量的类对我来说很奇怪。考虑使用简单的字符串变量lastVisitedPath。如果在单个类中使用此变量,则将其作为该类的字段。

第二 - 命名不是很易读。以下是获取最后一条路径的方式:LastPath.lastPath。你看到这无用的重复?还要记住,由于Microsoft命名准则,公共成员应该具有Pascal Case名称。考虑创建具有描述性名称的类,如GlobalValuesCache,以反映其目的:

public static class GlobalValues // holds values which are globally accessible
{
   public static string LastVisitedPath;
   // other global values
}

所以该用法看起来像GlobalValues.LastVisitedPathCache.LastVisitedPath。当然,如果这些类不应该被实例化,那么它们应该是静态的。