对于引用类型,本身就是传递的指针,ref没有效果,如果你的示例不对。
ref是针对值类型的。将值类型的地址进行传递,效果就是如果改变了参数值,那么在调用方法外也是能看到更改的。
ref是有效果的,等refMethod操作完以后,会导致实参为null,从而引发错误。我理解的ref 传递时实参的地址,如果实参时值类型,那么ref 形参就是实参的地址,如果实参是引用类型,那么ref传递的是引用类型的地址的地址;我今晚把学习的博客写一下,您老麻烦瞄一眼看看我理解的对不对
@代码小兵的成长: https://msdn.microsoft.com/zh-cn/library/s6938f28.aspx 这里有一篇关于ref传递引用类型的参考。
@幻天芒: 大神,看我写的博文对不对
http://www.cnblogs.com/zbqldyj/p/4480775.html
@代码小兵的成长: 你能不能从基础的编程学起?比如找本大学的《C 语言程序设计》和《编译原理》看看。我看你连变量,形参等概念都没有。
@Launcher: 哎呀呀呀呀呀呀呀,大神别光批评啊,夸奖一下也行啊,至少我很努力的在学了啊 ,我天天都是晚上熬夜到晚上两三点呢,给点面子嘛
你这基础太差了,从来都没明白函数申明中的参数到底是啥!
你的测试代码应该这样写:
public void CommonMethod(MyInt myInt)
{
myInt = new MyInt{2,null};
}
public void RefMethod(ref MyInt myInt)
{
myInt = new MyInt{2,null};
}
确实有点差,所以要学习嘛,不过我这个题目,我不认为你身边有多少工作五年以内的人能回答出来原理
我又不遍历,没看懂您老的潜台词啊,这种初始化方式和参数有啥关系啊,刚刚搜了几篇文档,没提到啊
大神详细描述一下呗
@代码小兵的成长: 我就纳闷了,你的那些有疑问的概念和相关的代码都是从哪儿找的。我只能请你认真的看 MSDN https://msdn.microsoft.com/zh-cn/library/14akc2c7.aspx.
@Launcher: 看了您老给的地址了,也懂得了ref的理论,今天写了一篇博文,跪求大神支持,明天将我举例子的原理画出来,应该算是理解了ref
http://www.cnblogs.com/zbqldyj/p/4480775.html
好好努力,肯定会学的很好的
额,好吧,难道你们认为这个很简单吗
@代码小兵的成长: 这个倒不是的,知识是一点一点积累的,那句话是鼓励人的
@wangYiYi: 哈哈,好的,多谢您老了
看你叙述的就稀里糊涂的。一个 hold 了某个地址值 的变量,称为指针。我不知道你还纠结什么。
那你能告诉我我的代码的答案吗,为什么会有这种情况,帮忙解释一下吧大神,我现在是理解了,不过不知道对不对
哎哎哎…… 我给你说啊,其实吧,在.net中 完全可以Ref out这些 关键字的。Net中完全可以用引用类型来代替指针。Net中有ref,out,还有像struct,完全是为了 让C# 调用VC++的时候方便。你不用纠结这些的。
主要是用来研究参数在内存中的运行机制,你说能不纠结不,不过现在已经自己理解了一些东西