C#的参数传递,一道面试题
来源:互联网 发布:广广西电网络收视费 编辑:程序博客网 时间:2024/04/29 20:58
1.定义一个类MPigeon,调用一个Swap交互函数,问最后实参的结果是什么
-----------类定义------------------
public class MPigeon
{
public string Name { get; set; }
}
----------交换函数---------------
public void Swap(object a,object b)
{
object temp=a;
a=b;
b=temp;
}
----------测试代码---------------
private void button2_Click(object sender, EventArgs e)
{
MPigeon a = new MPigeon() { Name = "Black" };
MPigeon b = new MPigeon() { Name = "White" };
Swap(a, b);
string ResultMsg = string.Format("a:{0},b:{1}", a.Name, b.Name);
MessageBox.Show(ResultMsg);
}
----------结果显示---------------
----------结果分析---------------
由于实参变量和形参变量都是引用类型,它们都指向内存堆中的某一对象的地址,
函数是将实参变量指向的地址值复制了一份给形参变量,由于形参变量和实参变量指向堆中同一地址
由于是复制了一份,所以实参的地址在swap函数中是没有被改变的,所以最后输出的结果,实参的值和原来是完全一样的
(注意:swap函数只是交互了一下形参的地址而已,而没有改变它们的值,如果改变了值,那实参的值也会跟着改变)
例如:
public void Swap2(object a, object b)
{
((MPigeon)a).Name = "Ronaldo";
((MPigeon)b).Name = "Rivaldo";
}
- C#的参数传递,一道面试题
- java参数传递一道简单面试题
- 一道C#面试题
- 一道C#面试题
- c#一道面试题类
- 一道关于实例化顺序的C#面试题
- 一道关于实例化顺序的C#面试题
- 面试题:java参数传递
- 从一道面试题说说方法的引用传递和值传递
- 中兴的一道面试题
- 一道面试题的思考
- 微软的一道面试题
- 一道NEC的面试题
- 一道面试题的分析
- 一道数字的面试题
- 一道错误的面试题
- 一道公司的面试题
- google的一道面试题
- 告诉你一个真实的中国互联网
- java 文件上传
- BI跟报表一样吗?
- native 调用 java 类中的一个静态方法
- asp.net 导出数据源到Excel模版文件
- C#的参数传递,一道面试题
- shangXueChang Mashibing shs 整合项目创建由零开始
- 手把手学习Rails 文件上传(支持Rails2.3)
- linux sig
- Js获取屏幕高度和宽度
- android surfaceflinger研究----Surface机制
- centos6下编译webkit时依赖库atk/glib的安装
- Delphi开发WebService给ASP.NET调用
- Bos平台修改发布业务单元的jdk版本