C#中与Java中的public final static相对应的是什么?

59

在Java中我可以这样写:

public final static MyClass foo = new MyClass("foo");

在C#中有没有相应的东西?

2个回答

93

我能想到的最接近(并不完全相同,final 也有其他含义),与 Java 中的 final 字段最接近的是 readonly

public static readonly MyClass field = new MyClass("foo");

如果你有一个原始类型(字符串、整数、布尔值),你可能会想使用 const 代替。

public const string MAGIC_STRING = "Foo";

7
对于变量而言,它们几乎是完全相同的东西。虽然在初始化方面存在一些不同的规则(在此无关紧要),以及在某些情况下Java中的final字段类似于C#中的const字段,但在这种情况下,我认为它们是等效的。 - Jon Skeet
3
需要注意readonlyconst之间的不同。const将值固定在代码中,因此如果您用一个包含const值的DLL替换另一个DLL,那些使用该DLL的其他DLL将需要重新构建才能获取新值。readonly是运行时的,并且不需要这样做。 - Nick Gotch
那么原始类型不需要使用“static”关键字吗? - Chandler

-5
sealed class finalClass
{
   ...
}

这是针对一个的 - 这是一个字段 - Jon Skeet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接