这是我的课怎么抱我上次访问路径:如果我有只有一个静态变量的类 - 我应该声明这个类是静态的吗?
public class LastPath
{
private static string _lastPath;
public static string lastPath
{
get { return _lastPath; }
set { _lastPath = value; }
}
}
这是我的课怎么抱我上次访问路径:如果我有只有一个静态变量的类 - 我应该声明这个类是静态的吗?
public class LastPath
{
private static string _lastPath;
public static string lastPath
{
get { return _lastPath; }
set { _lastPath = value; }
}
}
如果一个类的所有成员是静态的,你的类并不意味着实例化,它应该是static
。
在这种情况下,您的班级满足上述规则或指导原则,因此将其标记为static
将有意义,因为您没有任何实例成员。
LastPath path = new LastPath();
path.????// Nothing to access, so prevent instantiation by marking class static.
是说,如果你在你的类和方法只有一个领域我认为,你也许并不需要一个类可言,只是将其重构到一些其他类的地方才有意义。
我会说你这样做:
public static class LastPath
{
public static string lastPath
{
get;set;
}
}
你应该把它声明为static
静态类不能被实例化,但非静态类可以被实例化,这是不需要的。
我的get \ set有什么问题?两者之间有什么区别? – user3328870
@ user3328870,区别不大。你不需要创建一个单独的领域和所有这些东西。 C#会为你做;) –
使类的静态和使公共财产为静态和你做,这样的:
public static class LastPath
{
public static string lastPath { get;set;}
}
我的get \ set有什么问题?两者之间有什么区别? – user3328870
你的也很好,但在.net framerwork 3.5及以上版本中,你可以让这样的getter setter无需私人领域 –
首先 - 我看起来很奇怪创建类来保存单个变量。考虑使用简单的字符串变量lastVisitedPath
。如果你在单个类中使用这个变量,那么把它变成这个类的字段。
第二 - 命名不是很可读。以下是获取最后路径的方式:LastPath.lastPath
。你看到这个无用的重复?另外请记住,由于Microsoft命名准则,公共成员应该拥有Pascal Case名称。考虑创建具有描述性的名称类像GlobalValues
或Cache
体现其目的:
public static class GlobalValues // holds values which are globally accessible
{
public static string LastVisitedPath;
// other global values
}
这样使用会像GlobalValues.LastVisitedPath
或Cache.LastVisitedPath
。当然,如果这些类不应该被实例化,它们应该是静态的。
你的代码是好的不要让getter setter把它变成公共字段 –
有一点要记住:静态类上的Settable属性_may_表示一个设计,你依赖于全局/共享的可变状态,这会导致一些微妙的错误(某人,某处将其设置为某个其他值,现在的东西正在其他地方打破)。不知道确切的代码是不可能的,只是想一想。 –