C#为什么不能像C/C++一样的支持函数只读传参
2018-05-02 11:21
537 查看
C#为什么不能像C/C++一样的支持函数只读传参?
这个问题其实问的人挺多的,我自己也经常想实现这个功能,但是发现总是那么的不尽人意。
有些人倒是给出了一下答案,但是都不能很好的解决像C/C++一样的支持函数只读传参这个问题。
其实这块我觉得我们可能有个误区。就是我们为什么要这样做呢?这样做的目的是什么?对了就是这个。答案也在这里面。关键就在这目的上。我们用C/C++可能有 function(Data const * const pcData),但是在C#里面没有了。感觉似乎少了点什么。对就是少了点什么,我一直这么觉着。其实我们仔细想一想,C/C++这么写是什么目的?这么写的目的是不允许(限制)写接口的人在实现接口的时候在接口类部修改参数内容,对了,就是这个目的。可是写接口的人不管怎么写,调用接口的人怎么知道呢,他可能看了头文件里面的函数声明,哦,这个函数是安全的,不会修改我的参数。关键点来了。其实C/C++的const参数限定,是在写代码的时候编译期限定的,也就是说编译器在你编译方法的时候就帮你检查了方法是否有修改参数的行为。那么C#呢?他就让写方法的人去决定是否会在内部修改参数内容。C#有四种参数修饰符:in、params、ref、out。这四种各有各的用途,尤其是ref和out,out专门用来修改参数的,那么当我们没有修饰符的修改参数的时候,我们应该默认是不修改函数参数的。目前本人只能理解到这种地步,希望有更深层次的理解的朋友给出帮助。谢谢!!!
相关文章推荐
- C# PDF Page操作——设置页面切换按钮 C# 添加、读取Word脚注尾注 C#为什么不能像C/C++一样的支持函数只读传参 web 给大家分享一个好玩的东西,也许你那块就用的到
- 为什么C#不支持函数默认参数呢
- C++之静态成员函数为什么不能为虚函数
- C C++全局变量初始化 initializer element is not constant 错误 c++中为什么不能对全局变量在函数外赋值
- 为什么C++静态成员函数不能访问非静态成员变量、不能调用非静态成员函数?(面试常考)
- C++中为什么构造函数不能为虚函数原因
- c++中非静态函数不能用类名调用,为什么CWnd的成员函数GetDC()可以直接调用啊?
- c++静态成员函数为什么不能为虚函数?
- 为什么C++成员函数不能作为C-Style回调函数?
- 既然C++读作“C加加”,那为什么C#不能读作“C井”呢?
- c/c++中 函数为什么要用到char ** 传参 .
- C++为什么不能通过函数返回值区分函数重载?
- C/C++ 为什么在函数内部修改形参并不能真正地改变传入形参的值?
- c++中传递数组给函数时,为什么不能在子函数中求数组长度
- C++各种函数为什么能或者不能是虚函数
- C++的const类成员函数(解释为什么非const成员函数不能访问const对象的数据成员)
- C++中为什么构造函数不能定义为虚函数
- 漫谈C++为什么不支持模板虚函数
- 为什么C++变量名字和函数名字不能是同一个?
- C++函数间传参,为什么传指针