我最近发现了汽车属性并且非常喜欢它们。目前我正尝试在任何可以的地方使用它们。不仅仅是为了能够在任何地方使用它们,更多的是为了看看它们在大多数情况下的工作效果如何。
现在我正在创建一个单例并想:“嘿,让我们在这里也尝试一下自动属性”。
public class MySingleton
{
public static MySingleton MySingleton { get; private set; }
private MySingleton() {}
static MySingleton() { MySingleton = new MySingleton(); }
}
所以我的问题是:“像这样实现单例是个好主意吗?”
我并不是在问单身人士总体上是否是一个好主意。
我个人不会这样做。我不喜欢将自动实现的属性与您从不调用的私有设置器一起使用really您需要一个由只读变量支持的只读属性。只需多一行代码就可以更明确地表达您的意思:
public sealed class MySingleton
{
private static readonly MySingleton mySingleton;
public static MySingleton MySingleton { get { return mySingleton; } }
private MySingleton() {}
static MySingleton() { mySingleton = new MySingleton(); }
}
这样就连人都没有了tempted更改单例类以重新分配属性或变量,因为编译器将停止它们。他们必须添加一个设置器和/或使变量变为非只读,这是一个更大的更改 - 希望他们会重新考虑这一更改。
换句话说:
从 C# 6 开始,使用自动实现的只读属性会更容易:
public sealed class MySingleton
{
public static MySingleton MySingleton { get; } = new MySingleton();
private MySingleton() {}
static MySingleton() {}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)