为什么以及如何在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?