c# - Constants 类中的静态属性是否应该实现支持字段?

标签 c# static-variables

我有一个 Constants 类,其中存储了许多静态只读变量。

我应该这样做吗:

private static readonly int _maxThings = 100;
...
public static int MaxThings { get { return _maxThings; } }

这对我来说似乎有点多余。我有什么理由不执行以下操作吗?

public static int MaxThings { get { return 100; } }

编辑

好吧,这是一个脑残问题。我认为重点是,如果我要在初始化时设置这个值,那么使用静态支持字段并公开一个不需要本身是静态的公共(public)仅获取属性是有意义的。

但是,如果我愿意将公共(public)静态属性设置为硬值,那么这与将其烘焙到程序集中没有功能差异。除非我在这里遗漏了一些其他概念,否则在这种情况下我只会使用 const。

感谢您的回答。

最佳答案

你应该这样做

public const int MaxThings = 100;

在这种情况下我没有理由使用属性。

更新->

回应评论..如果您正在开发库并导出常量,那么了解常量如何在 .net 中使用非常重要。当针对您的库进行编译时,常量值将被内联并包含在消费应用程序中,这样,如果您的库已更新而消费应用程序未更新,则旧的常量值仍将存在。当然,这是应该使用静态属性的时候。

如果您不开发库,那么使用 const 就可以了。

关于c# - Constants 类中的静态属性是否应该实现支持字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3349146/

相关文章:

C# 序列化 xsi :type and xsd

c# - 尝试通过客户端库获取 TFS 用户列表

c# - 如何使用 CaSTLe ActiveRecord 在保存或更新期间自动填充字段

C++ 静态初始化顺序

python - python 类中的静态变量声明

c# - 静态变量和静态字段的实现区别是什么?

c# - 命令绑定(bind)实现中的 MVP-VM 与 MVVM

c# - 使用霍夫线变换的最长线检测

c++ - 多重继承和单例设计模式

objective-c - 为什么要保留静态变量?