Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用const作为版本号_C#_Constants_Readonly - Fatal编程技术网

C# 使用const作为版本号

C# 使用const作为版本号,c#,constants,readonly,C#,Constants,Readonly,我需要在我的一个组件中检查某个版本。出于这个原因,我只想引入一个公共常量,我可以在它上面进行测试 然而,我刚刚在这篇文章中读到,在将来发生变化时使用const可能是个坏主意 最好的方法是什么?使用公共只读int?使用属性?我不能使用AssemblyVersion或AssemblyFileVersion,因为它们不在我手中 谢谢 我会使用const(事实上,我确实使用它)readonly是在运行时初始化的,事实上,每次运行应用程序[1]时,它都可以有不同的值。由于这个特性,我想说它对于版本号没有多

我需要在我的一个组件中检查某个版本。出于这个原因,我只想引入一个公共常量,我可以在它上面进行测试

然而,我刚刚在这篇文章中读到,在将来发生变化时使用const可能是个坏主意

最好的方法是什么?使用公共只读int?使用属性?我不能使用AssemblyVersion或AssemblyFileVersion,因为它们不在我手中

谢谢

我会使用const(事实上,我确实使用它)
readonly
是在运行时初始化的,事实上,每次运行应用程序[1]时,它都可以有不同的值。由于这个特性,我想说它对于版本号没有多大用处

版本号在编译时是(应该是?)硬编码的,这将是一个
const
。比较可以是C中的
#define

我认为由于这种差异,
const
不像
readonly
那样使用数据内存。不过我没有这方面的消息来源


[1]

这些不在我手中
,对不起,你到底是什么意思?你能解释一下为什么不能使用AssemblyVersion等。这就是它们的目的,当然,如果你发布一个新版本的程序集,那么你可以控制它。我可能读到的内容比实际内容更多,但当我读到OP的帖子时,我感觉到他的组件正被其他人用在他们的组件中。然而,为了配合得好,他的组件需要能够检查兼容性。如果我是对的,我同意下面的Bart,并且认为为此目的使用常量没有问题。AssemblyVersion是全局分配的。我不知道汇编版本的价值。所以我不知道什么版本是兼容的。@凯文:你说得对。只是当我阅读另一篇SO文章时,我得到的印象是,如果我增加常量并交换dll,其他程序集可能仍然使用旧的常量值…
readonly
不必是静态的,因此使用的内存不同于
const
(就内存而言,它的作用就像静态字段).只是当我读到另一篇SO帖子时,我觉得如果我增加常量并交换dll,其他程序集可能仍然使用旧的常量值…@Dunken,我不知道是否会这样。但这很容易测试。