凭借大量的 C++ 背景,我习惯于编写以下内容:
const int count = ...; //some non-trivial stuff here
for( int i = 0; i < count; i++ ) {
...
}
我预计在 C# 中同样可以正常工作。然而...
byte[] buffer = new byte[4];
const int count = buffer.Length;
产生错误 CS0133:分配给“count”的表达式必须是常量.
我不明白。为什么那是无效的?int
是一个值类型,不是吗?为什么我不能这样分配一个值并使变量不可更改?
Because const
在 C# 中还有更多const
than const
在C++中。 ;)
In C#, const
用于表示编译时常量表达式。它类似于以下 C++ 代码:
enum {
count = buffer.Length;
}
Because buffer.Length
在运行时计算,它不是常量表达式,因此这会产生编译错误。
C# 有一个readonly
与 C++ 更相似的关键字const
。 (不过它仍然受到更多限制,并且 C# 中不存在 const 正确性这样的东西)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)