当前位置:  开发笔记 > 编程语言 > 正文

C#传递值/参考?

如何解决《C#传递值/参考?》经验,为你挑选了2个好方法。

常见问题,但我可以使用"英语"解释..

我喜欢Java

Cat myCat

实际上是指向猫的指针?

我真的应该在c#中创建复制构造函数吗?


我知道我们正在通过值传递,但现在我的问题是我们通过指针值或对象的完整副本传递?

如果它是后者,是不是太昂贵的性能/记忆明智?那是你必须使用ref关键字的时候吗?



1> Sunny Mileno..:

正如@rstevens回答的那样,如果它是一个类,myCat就是一个参考.但是如果你将myCat传递给方法调用,那么引用本身就会通过值传递 - 即参数本身将引用同一个对象,但它是一个全新的引用,所以如果你将它赋值为null,或者创建一个新对象,旧的myCat引用仍将指向原始对象.

SomeMethod(myCat);

void SomeMethod(Cat cat)
{
    cat.Miau(); //will make the original myCat object to miau
    cat = null; //only cat is set to null, myCat still points to the original object
}

Jon Skeet有一篇很好的文章.



2> Joel Coehoor..:

请记住,指针与引用不完全相同,但如果需要,您可以按照这种方式考虑它.

我发誓我在10分钟前看到了另一个问题,但我现在找不到链接了.在我看到的另一个问题中,他们讨论的是通过ref和值传递参数,并且归结为:

默认情况下,在.Net中,您不会通过引用传递对象.您可以按值传递对象的引用.

差异很微妙但很重要,特别是例如,如果要分配给方法中传递的对象.

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有