问题描述
以下内容是否有区别?
class C
{
// One:
public static readonly int ValueAsAMember = 42;
// Two:
public static int ValueAsAProperty { get { return 42; } }
}
我习惯于以第一种方式编写常量(除非它们是私有的/内部的,在这种情况下,我将使用const关键字),但是最近我看到了第二种形式.
I'm used to writing constants the first way (unless they're private/internal, in which case I use the const keyword), but I recently saw the second form.
在可读性,约定,性能或其他方面,有没有一种方法比其他方法有优势?
Is there any advantage one way over the other in terms of readability, convention, performance, or anything else?
推荐答案
是的,有一个优点:
如果该值在将来的任何时候都可以更改(例如,在代码的未来版本中),则该值可以与时间相关,例如,它与时间相关,您可以在只读属性中支持该值,而无需更改您班级的公共界面.
If the value gets changeable at any point in the future (e.g. in a future version of your code), in a way that it is, for example, time-dependent, you can support that in the read-only property without changing the public interface of your class.
如果必须用属性替换 readonly
字段,则必须重新编译使用该类的所有其他程序集.
If you have to replace a readonly
field with a property, you will have to recompile any other assemblies that use your class.
这篇关于C#getter与只读的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!