“静态只读”与“常量”

2023-12-07

我读过有关const and static readonly字段。我们有一些只包含常量值的类。它们用于我们系统中的各种事物。所以我想知道我的观察是否正确:

这些常数值是否应该始终是static readonly对于所有公开的事情?并且只使用const for internal/protected/private values?

你有什么建议吗?我应该甚至不使用static readonly字段,而是使用属性也许?


public static readonly字段有点不寻常;public static属性(只有一个get)会更常见(也许由private static readonly field).

const值直接烧录到调用站点中;这是双刃剑:

  • 如果在运行时获取该值(可能是从配置中获取),则该值是无用的
  • 如果更改 const 的值,则需要重建所有客户端
  • 但它可以更快,因为它避免了方法调用......
  • ...无论如何,有时可能会被 JIT 内联

如果该值将never改变,那么 const 就可以了 -Zero等做出合理的const;p 除此之外,static属性比较常见。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“静态只读”与“常量” 的相关文章

  • 如何在特定时间以毫秒精度触发 C# 函数?

    我有两台计算机 它们的时间通过 NTP 同步 确保时间仅相差几毫秒 其中一台计算机将通过 TCP 向另一台计算机发送一条消息 以在两台计算机上的未来指定时间启动某个 c 函数 我的问题是 如何在特定时间以毫秒精度 或更好 触发 C 中的函数
  • 使用 Json.NET 序列化子类

    我正在尝试使用 Json NET 序列化子类 生成的 json 包含超类的序列化属性 但是not子类对象的属性 这似乎与我发现的一个问题有关这里就这样 https stackoverflow com q 5863496 498969 但必须
  • 生成多个随机数

    我想生成 25 个唯一的随机数并将它们列在控制台中 数字的长度应至少为 10 个字符 有什么简单的方法可以做到这一点吗 尝试将数字构建为字符串 并使用 HashSet 确保它们是唯一的 Random random new Random Ha
  • 自动映射器多对多 stackoverflowException

    我遇到以下映射的堆栈溢出 Mapper CreateMap
  • 将字符串作为 PChar 从 CSharp 传递到 Delphi DLL

    我正在尝试将字符串从 C 传递到 Delphi 构建的 DLL Delphi DLL 需要 PChar 这是Delphi导出 procedure DLL Message Location PChar AIntValue integer st
  • 将公历日期转换为儒略日期,然后再转换回来(随着时间)

    我正在编写一个程序 必须将当前的公历日期和时间转换为儒略日期 然后再转换回公历门 最终我需要添加能够添加年 月 日 小时 分钟和秒的功能 但我需要先解决这部分问题 现在我已经从公历日期转换为儒略日期 所以从逻辑上讲 我觉得我应该能够以某种方
  • 局部函数声明有什么用处吗?

    大多数像我这样的 C 程序员都曾犯过以下错误 class C int main C c declares a function c taking no arguments returning a C not as intended by m
  • 如何从 Qt 应用程序通过 ODBC 连接到 MySQL 数据库?

    我有一个新安装的 MySQL 服务器 它监听 localhost 3306 从 Qt 应用程序连接到它的正确方法是什么 原来我需要将MySQL添加到ODBC数据源 我在遵循这个视频教程后做到了这一点 https youtu be K3GZi
  • C# 无法捕获 SerializationException

    我的程序在加载序列化文件的部分遇到问题 如果文件无法反序列化 我希望很好地失败 但由于某种原因 我的程序将中断而不是进入 catch 子句 这是我的代码 using FileStream fs new FileStream openFile
  • Monotouch全局异常处理

    我在野外发现了一只令人讨厌的虫子 但我无法确定它的具体情况 有没有办法拥有全局 Try Catch 块 或者有办法处理 Monotouch 中未处理的任何异常 我可以包起来吗UIApplication Main args 在 try cat
  • 对作为函数参数传递的指针使用删除

    删除作为函数参数传递的指针是否可以 并且合法 如下所示 include
  • 如何自定义 Google 测试失败消息?

    我编写了一个如下所示的 Google 测试 它将一些计算值与 CSV 文件中预期存储的值进行比较 class SampleTest public testing Test public void setupFile const std st
  • 调用异步方法在视图模型的构造函数中加载数据有警告

    我的视图包含一个 ListView 它显示来自互联网的一些数据 我创建一个异步方法来加载数据并在我的视图模型的构造函数中调用该方法 它有一个警告提示我现在使用await关键字 还有其他解决方案可以在构造函数中异步加载数据吗 有几种可以应用的
  • 在 C# 中使用命名空间别名有什么好处? [复制]

    这个问题在这里已经有答案了 使用命名空间别名有什么好处 仅仅是为了简化编码吗 仅当与类发生冲突时我才使用名称空间别名 对我来说 这根本没有简化 我的意见是 如果没有必要 就不要使用
  • C#:自定义转换为值类型

    是否可以将自定义类转换为值类型 这是一个例子 var x new Foo var y int x Does not compile 是否有可能实现上述情况 我需要超载一些东西吗Foo 您将必须重载强制转换运算符 public class F
  • DataGridView 行背景颜色没有改变

    我想根据加载时的特定条件更改 DGV 行的背景颜色 即使在 Windows 窗体中也是如此 但我看不到任何 DGV 行的颜色有任何变化 谁能告诉我如何解决这个问题 private void frmSecondaryPumps Load ob
  • valgrind 在 Raspberry Pi 上返回未处理的指令

    我最近一直在尝试在运行 Debian GNU Linux7 0 喘息 的树莓派 型号 b 上使用 valgrind 来调试分段错误 每次我在编译的 C 程序上运行 valgrind 时 都会得到类似以下内容的信息 disInstr arm
  • 如何同步nosql db(ravendb)中的更改

    我已经开始在 RavenDB 的示例上学习 NoSQL 我从一个最简单的模型开始 假设我们有由用户创建的主题 public class Topic public string Id get protected set public stri
  • 卸载程序

    我正在尝试使用此代码卸载程序 但它似乎不起作用 我尝试过其他答案 但似乎也不起作用 有人可以帮助我吗 我正在尝试按给定名称 displayName 卸载该程序 例如 我给出 displayName Appname 那么此代码应该从我的计算机
  • 实体框架代码首次日期字段创建

    我正在使用实体框架代码优先方法来创建我的数据库表 下面的代码 创建一个DATETIME数据库中的列 但我想创建一个DATE柱子 DataType DataType Date DisplayFormatAttribute ApplyForma

随机推荐

  • 呼叫和 Callvirt

    CIL指令 Call 和 Callvirt 之间有什么区别 当运行时执行call指令它正在调用一段确切的代码 方法 毫无疑问它存在于何处 一旦 IL 被 JITted 调用站点生成的机器代码就是无条件的jmp指令 相比之下 callvirt
  • 查找数组中的非重复元素

    我的数组是 array array 4 3 4 3 1 2 1 我想输出如下 Output 2 因为 2 只出现一次 这是我尝试过的 array array 4 3 4 3 1 2 1 array1 array 4 3 4 3 1 2 1
  • 在 Kotlin 中解析 webp 文件头以获取其高度和宽度,但得到意外结果

    我正在尝试读取 WebP 图像标题 根据WebP 容器规范扩展文件格式 fun get24bit data ByteArray index Int Int return data 0 index toInt or data 1 index
  • 在 Firemonkey 中滚动后列表框项目发生变化

    我正在 Firemonkey 中开发一个多设备应用程序 其中 Main 类有一个包含一些项目的 ListBox 组件 这些项目中的每一个都具有相同的定制风格 我的问题是 当列表框中有很多项目时 我必须垂直滚动才能看到其余项目 在这种情况下
  • 当前 Icecast 流媒体歌曲的标题

    我读过一些问题 但没有人解决我的问题 我制作了一个简单的客户端来通过icecast2服务器读取声音流 我用以下方式读取声音 a new WMPLib WindowsMediaPlayer a URL http radiolink 8000
  • 骨干项目组织

    我正在努力寻找一种干净 可靠的方法来组织我的 Backbone 应用程序 我使用 Requirejs Handlebars 和 Requirejs Text 插件来动态加载 HTML 视图 为了简单起见 我们假设该网站有以下页面 Home
  • Heroku 无法安装 pywin32 库

    我正在尝试将我的 Python 应用程序推送到 Heroku 但看起来像pywin32未安装 Counting objects 519 done Delta compression using up to 4 threads Compres
  • 如何在Python的xml.dom.minidom中设置元素的id?

    如何 创建了一个文档和一个元素 import xml dom minidom as d a d Document b a createElement test setIdAttribute 不起作用 b setIdAttribute som
  • Oracle Apex 18.1 交互式网格 (IG) 以编程方式设置过滤器?自定义 IG 搜索

    有没有办法通过 Javascript 或 PL SQL API 在 Oracle Apex 中为 IG 设置过滤器 在进行研究时我偶然发现APEX IG 5 1 4 食谱或一些博文如何破解 APEX 交互式网格系列用于使用 Javascri
  • Git post-receive 挂钩不会从 master 中删除已删除的文件

    我在我的服务器上创建了一个裸 git 存储库 并设置了以下 post receive 挂钩这个博客 bin bash while read oldrev newrev ref do branch echo ref cut d f3 if m
  • 如何在 Perl 中进行自省?

    在 Perl OOP 中 如何转储此类及其父类中的所有方法 字段 my self 我看到了很多上面的构造函数 那么 什么是 我有 Java OOP 背景 如果你的解释能够遵循Java领域 我会更容易理解 What is See perldo
  • 不在 gridview 中显示日期时间最小值

    given public class Customer public int Id get set public string FirstName get set public DateTime Birthdate get set 我有一个
  • 使用reducebykey时出错:int对象不可订阅

    我收到错误 int 对象不可订阅 执行以下脚本时 element reduceByKey lambda x y x 1 y 1 with element 是一个键值 RDD value 是一个元组 输入示例 A toto 10 A titi
  • 如何为 iPhone 设置视口元以正确处理旋转?

    所以我一直在使用 让我的 HTML 内容在 iPhone 上完美显示 它工作得很好 直到用户 将设备旋转到横向模式 其中显示仍限制为 320 像素 有没有一种简单的方法来指定一个视口 该视口会随着用户更改而变化 设备方向 或者我必须求助于
  • 对于终端应用程序来说,什么是好的 Java 类诅咒库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我想编写一个进行屏幕操作的 Java 终端应用程序 是否有任何好的库可以让您像 nix C 世界中的诅咒一样操作屏幕 我正在寻找的最小功能是窗口和用
  • 对多个任意过滤条件使用 tidy eval

    我想用整齐的评价编写多个完全灵活的过滤条件 一个相关但不太复杂的问题已解决在这个 Stackoverflow 问题中 以下代码 改编自上述其他问题 正在运行 它将两个过滤条件应用于gapminder数据集 并返回过滤后的数据 library
  • GAE 通过 app.yaml、python 装饰器或 users.get_current_user 强制登录?

    我在 GAE 应用程序的 app yaml 配置文件中使用 登录 选项 看起来像这样 url admin script myapp app login admin url script myapp app login required 更新
  • Pandas 用最后一个已知值填充空尾随值

    我有几个具有不同结束时间段的专栏 需要用最后一个已知值填充空数据 有没有一种 Pandas 方法可以做到这一点 而无需在结束日期上循环 我需要过去 4 个月的 Gain sum y 等于 57129 0 gain sum x gain su
  • JSF - @PostConstruct 可以使用 ajax 调用来阻止 setter 方法吗?

    我想这个问题从标题就已经很清楚了 这是我真正的豆子 ManagedBean name selector RequestScoped public class Selector private String profilePage PostC
  • “静态只读”与“常量”

    我读过有关const and static readonly字段 我们有一些只包含常量值的类 它们用于我们系统中的各种事物 所以我想知道我的观察是否正确 这些常数值是否应该始终是static readonly对于所有公开的事情 并且只使用c