为什么以及如何在C#中使用静态只读修饰符
那么我一直在研究关于析构函数,这又一次影响到了构造函数......所以开始一些Google搜索和测试,而不是我面对这样的事情。
public class Teacher
{
private static DateTime _staticDateTime;
private readonly DateTime _readOnlyDateTime;
/*Resharper telling me to name it StaticReadolyDateTime insted of _staticReadolyDateTime*/
private static readonly DateTime StaticReadolyDateTime;
static Teacher()
{
_staticDateTime = DateTime.Now;
/*ERROR : Thats oke as _readOnlyDateTime is not static*/
//_readOnlyDateTime = DateTime.Now;
StaticReadolyDateTime = DateTime.Now;
}
public Teacher()
{
_staticDateTime = DateTime.Now;
_readOnlyDateTime = DateTime.Now;
/*Error : Why there is an error ?*/
StaticReadolyDateTime = DateTime.Now;
}
}
我做了三个静态,只读,静态只读的私有属性
因为它们是私有属性,我用_prefix命名它们。 但我的resharper告诉我要将_staticReadolyDateTime重命名为StaticReadolyDateTime(即它可以是静态只读)。 它是否与命名对照一致?
另一方面,我无法在公共构造函数中使用静态只读属性,但很容易使用静态和只读属性(即使用它在静态构造函数中)
比我搜索了解更多,他们大多数都说静态只读应该只用于静态构造函数,但不是说为什么?
所以我需要了解一些静态只读修饰符的用法及其最佳用法和限制。 与常量,静态,只读的区别会更好...... :)
非静态只读成员只能在类或非静态构造函数中设置。
静态只读成员只能在类或静态构造函数中设置。
因此,在非静态构造函数中设置静态只读成员是非法的。 请注意,在课堂中任何地方阅读静态只读成员都没有问题; 限制就在你可以写的地方。 如果您不想限制,请不要readonly
。
只能在构造函数中设置readonly。 一旦设置,它就像一个不能修改的常量。 而对于静态只读,它需要在静态构造函数中设置。
链接地址: http://www.djcxy.com/p/21083.html上一篇: Why And how to use static readonly modifier in C#
下一篇: How to define the constants the used also by the subclass?