c# – 使用自动属性实现单例是个好主意?
发布时间:2020-12-15 06:34:25 所属栏目:百科 来源:网络整理
导读:我最近发现了自动属性,并且很喜欢他们.在这一刻,我正在尝试使用它们到处可以.不是真的只是能够使用它们到处,但更多的是看看他们在大多数情况下的工作情况. 现在我正在做一个单身而思想:“嘿,让我们来试试这里的自动属性”. public class MySingleton{ publi
我最近发现了自动属性,并且很喜欢他们.在这一刻,我正在尝试使用它们到处可以.不是真的只是能够使用它们到处,但更多的是看看他们在大多数情况下的工作情况.
现在我正在做一个单身而思想:“嘿,让我们来试试这里的自动属性”. public class MySingleton { public static MySingleton MySingleton { get; private set; } private MySingleton() {} static MySingleton() { MySingleton = new MySingleton(); } } 所以我的问题是:“这样做单身人士是个好主意吗?” 我不是问一个单身人士是否是一个好主意. 解决方法
我不会亲自这样做我不喜欢使用一个私有设置器自动实现的属性,您永远不会调用它们真正需要只读属性由只读变量支持.对于你的意思,只有一行代码更加明确:
public sealed class MySingleton { private static readonly MySingleton mySingleton; public static MySingleton MySingleton { get { return mySingleton; } } private MySingleton() {} static MySingleton() { mySingleton = new MySingleton(); } } 这样,没有人甚至试图改变单例类来重新分配属性或变量,因为编译器会阻止它们.他们必须添加一个设置器和/或使变量非读取,这是一个更大的变化 – 希望他们会重新考虑. 换一种说法: >是的,它会奏效 从C#6开始,只读自动实现的属性更容易: public sealed class MySingleton { public static MySingleton MySingleton { get; } = new MySingleton(); private MySingleton() {} static MySingleton() {} } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |