c# - 如何检查变量是否为 const?
问题描述
我愿意检查变量是否为 const。我该怎么做?我用谷歌搜索了很多,找不到答案。
我有一行代码:public const string xxx,在一个类中,我想检查 xxx 在另一个类中是否为 const。
解决方案
如何检查变量是否为 const?
没有变量是常量。“变量”和“常量”是对立的:变量是可以改变的存储位置。常数是不能的值。
你能说你为什么问这个问题吗?您可能会走错路;说出您真正的问题是什么,您将有更好的机会获得解决方案。
更新:问题已得到澄清。问题真的是
如何判断类或结构的成员是变量还是常量?
您可以使用反射来说明这一点,如下所示:
- 通过您喜欢的任何技术获取
Type
类或结构的。 - 如果您不知道名称,或者如果您知道,请使用获取
FieldInfo
类型成员的。GetFields
GetField
- 一个
FieldInfo
常量将IsLiteral
设置为 true 并IsInitOnly
设置为 false。
要小心,因为规则有点棘手。请记住,这里有三样东西:普通变量、只读变量和常量。变量是可以改变的存储位置。常量是不能的值。但是只读变量是只能在构造函数或初始化器中改变的变量,因此有时被归类为变量,有时被归类为值,但从不归类为常量。
同样,如果你能说出你为什么这样做,那就太好了,因为可能有更好的解决方案来解决你的实际问题。
推荐阅读
- php - PHP中一个多维数组的交集
- java - java中使用for循环的两个名称组合
- python - 如何在 tkinter 中动态构建输入框?
- java - Spring 说一个 bean 已经存在,但是这个 bean 只是被移动到另一个文件夹
- json - 调用初始化程序 SwiftUI 时没有完全匹配
- powerbi - 您不能在 A 和 B 之间创建直接的主动关系,因为这会引入歧义
- c# - Blazor 将 javascript 对象作为参数传递给 IJSRuntime
- r - 如何使用全局设置使数字变量在R中默认保留两位小数?
- c++ - 从 Webview2 (Edge/Chromium) 拦截 Windows 消息
- module - 运行时出错 become=yes 尝试获取 sudo 访问权限