如题.
解决方案 »
- C# 关于 二维数组 的问题。
- WEB用户控件引用的问题
- 怎样让自定义控件中的TextBox在设计模式中可以接受输入和选取其文本内容
- c# winform,我写了个发送email的小程序,但是每次做完send之后,它不发,要关闭程序后才发,怎么回事?
- 真急啊! 关于C# treeview 问题
- 请问这个button怎么没有移动呢?
- 100分求助C#中MDI程序怎么获得当前激活的子窗体 在线等
- c# 进程出现乱码问题,求救!
- 请求的名称有效,但是找不到请求的类型的数据。
- 如何做带参数的水晶报表?
- 问一下c#的初级问题,可能与web.config和@Assembly, @Import ,System.Net有关
- C#高手见,DATALIST关于类似DATAGRID的翻页编写问题
如果参数是引用类型的,那直接用就可以了。
按值传递是将变量在栈里存在的值作一个拷贝,因为按值传递只能是值类型变量,它的值就存在栈上,你对那个临时拷贝所做的修改,只影响那个临时拷贝里的值,不会影响到原来的变量。
按引用传递是将变量在栈里存在的值作一个拷贝,不过这里分好几种情况,首先说一般的应用型变量,它的值存在堆上(heap)上,栈上的变量里存放的是它在堆上的内存地址,而这时把变量在栈里存在的值作一个拷贝,也就是说又有一个临时的变量里也存放了它在堆上的内存地址,即又有一个指针指向它,这时对那个临时变量所做的修改将直接修改原来它在堆上值。
再说传递,按值传递,它里面存什么就传递什么,不需要再寻址;按引用传递,只传递一个四个字节的内存地址,然后再根据这个内存地址去寻址。
当传递的变量很小时,优先考虑按值传递( 当变量为值类型时);当传递的变量很大时,最佳的方案是把那些变量作成引用类型,再去传递。
(注:这里讨论的是一般情况,也就是说传递的时候前面 没有加 ref 或 out。如果大家还想了解关于 ref 和 out 的知识,我也很愿意与大家探讨,如果我有什么说错的地方还请大家指出。)