C#中有const, 不过那是真正的const, 是编译期的常量, 对此类常量的赋值表达式必需是一个常量表达式, 即在编译期即可求值出来.
最想要的是C/C++中对函数参数限制的那种const, 它限制该函数内部不会对被限制的变量进行改变对象状态的访问.
strcpy(char *dest, const char *src);
以及对整个成员函数进行限制的const, 它限制的是该成员函数不会改变其宿主对象的对象.
void MyClass::GetValue() const
{
}
以上这两点在C/C++中都是由编译器保证的, 如果违反则会招致编译器的抱怨. 而且是递归处理的.
不知道为什么C#中没有这两个关键字, 一个说法是编译器的负担加重了. 但这样的负担相比于所能带给程序语言的工程效率简直不值一提.
C#有readonly关键字, 名字起成readonly是一大进步, 因为C/C++中的const最恰切的语义就是只读, 这个只读还只是编译期保证的, 但是, 这个readonly只用来修饰成员变量的(包括静态和非静态的)
太遗憾了. C#语言版本不断升级, 加了LINQ, var变量, 匿名函数什么的, 在我看来加起来都比不上这一个关键字值钱.
阅读(706) | 评论(0) | 转发(0) |