在 C# 中使用 private const
变量或 private static readonly
变量有区别吗(除了必须分配 const
一个编译时表达式)?
因为它们都是私有(private)的,所以没有与其他库的链接。那会有什么不同吗?例如,它可以产生性能差异吗?实习字符串?有没有类似的?
最佳答案
好吧,您可以在属性中使用常量,因为它们作为编译时存在。您无法预测静态只读变量的值,因为 .cctor
可以从配置等初始化它。
在使用方面,常量被嵌入到调用代码中。这意味着,如果您重新编译一个库 dll 来更改一个public 常量,但不更改消费者,那么消费者仍将使用原始值。使用只读变量,这不会发生。反过来说,常量(非常非常小)更快,因为它只是加载值(而不是必须取消引用它)。
重新实习;尽管您可以手动执行此操作,但这通常是文字的编译器/运行时功能;如果您通过文字初始化一个只读字段:
someField = "abc";
然后 "abc"
将被实习。如果你从配置中读取它,它不会。因为常量字符串必须是文字,所以它也会被驻留,但访问方式不同:同样,从字段中读取是取消引用,而不是 ldstr
。 .
关于c# - C# 中的 private const 和 private readonly 变量之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/410723/