Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2313520
  • 博文数量: 527
  • 博客积分: 10343
  • 博客等级: 上将
  • 技术积分: 5565
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-26 23:05
文章分类

全部博文(527)

文章存档

2014年(4)

2012年(13)

2011年(19)

2010年(91)

2009年(136)

2008年(142)

2007年(80)

2006年(29)

2005年(13)

我的朋友

分类: WINDOWS

2008-09-08 22:58:47

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变量, 匿名函数什么的, 在我看来加起来都比不上这一个关键字值钱.
阅读(671) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~