用于字段初始化的静态或只读修改器

时间:2016-08-04 21:46:39

标签: c#

上课:

class MyClass
{
   private static TimeSpan myField = TimeSpan.FromSeconds(5);

   public void SomeMethod()
   {
       // usage of field
   }
}

myField字段初始化内联。我应该为它选择什么修饰符,静态(如上所述)或只读?

2 个答案:

答案 0 :(得分:0)

static - 这意味着它属于类而非实例。

readonly - 这意味着一旦定义了 - 就无法改变。

const - 在C语言中只是内联常量#define

这些是不同的东西,你无法比较它们。

ADD。只有原始类型可以是const。在您的情况下static readonly

答案 1 :(得分:0)

在6.0之前的C#中,您将实现由static readonly属性包装的static字段。

BTW,在C#6.0及以上版本中,可以简化为:

class MyClass
{
   // A read-only property that can only be set with a property initializer
   // or in a static constructor
   private static TimeSpan MyProperty { get; } = TimeSpan.FromSeconds(5);

   public void SomeMethod()
   {
       // usage of field
   }
}

...在编译期间实现了后备static readonly字段。