在c++中:const List<Record> &the_list指的是不能修改the_list的数据成员,而不是指向。
换个例子吧,这样和c#比较相对更加贴切 在c++中:int binary_search(const List<Record> *the_list,const Key *target),可以保证指针指向的对象不能修改,只作为输入然后执行相关操作输出相应结果。c#由于垃圾回收的原因,语法更加简洁,*the_list就可以写成the_list,叫做引用,但如何保证引用指向的对象不被修改能,ref和out就是两个意思,和const不是一回事啊- - |
#7 得分:0
回复于: 2011-02-22 15:13:43
那么声明为ReadOnly变量可以吗?
1)C#中,const可以修饰全局变量和局部变量,但readonly只能修饰全局变量 2)C#中,const修饰的全局变量或局部变量必须在声明的时候初始化,因为是静态,所以无法使用构造方法初始化,当需要调用const修饰的全局变量时,可以通过类直接调用,但const修饰的局部变量则无法通过类调用,并且作用范围只能为局部. 3)readonly修饰的全局变量可以在声明时初始化,也可以在构造方法中被初始化,如果readonly所修饰的全局变量在两个地方都初始化了, 那么最后这个全局变量的值是在构造方法中被初始化, readonly可以在全局变量和构造方法中同时初始化 | |
|
#8 得分:0
回复于: 2011-02-22 15:54:06
不能确保不被改变,要想别的办法,比如把不希望被修改的值设成readonly
C#默认是按值传递,如果传值类型的参数,进去不会改变 但传进去参数是引用类型(非string类型),传进去的是指针,在方法内可以操作对象,但不能改变对象的引用。 |
|
#9 得分:0
回复于: 2011-02-22 15:55:39
|
|
#10 得分:0
回复于: 2011-02-22 16:34:29
搞不懂c#为什么不设计一个类似的功能,感觉这个还是挺实用的
|