手机
当前位置:查字典教程网 >编程开发 >C#教程 >一道关于C#参数传递的面试题分析
一道关于C#参数传递的面试题分析
摘要:本文实例分析了一道关于C#参数传递的面试题。分享给大家供大家参考。具体如下:1.定义一个类MPigeon,调用一个Swap交互函数,问最后实...

本文实例分析了一道关于C#参数传递的面试题。分享给大家供大家参考。具体如下:

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); }

结果显示如下:

一道关于C#参数传递的面试题分析1

结果分析:

由于实参变量和形参变量都是引用类型,它们都指向内存堆中的某一对象的地址,

函数是将实参变量指向的地址值复制了一份给形参变量,由于形参变量和实参变量指向堆中同一地址

由于是复制了一份,所以实参的地址在swap函数中是没有被改变的,所以最后输出的结果,实参的值和原来是完全一样的

(注意:swap函数只是交互了一下形参的地址而已,而没有改变它们的值,如果改变了值,那实参的值也会跟着改变)

例如:

public void Swap2(object a, object b) { ((MPigeon)a).Name = "Ronaldo"; ((MPigeon)b).Name = "Rivaldo"; }

希望本文所述对大家的C#程序设计有所帮助。

【一道关于C#参数传递的面试题分析】相关文章:

经典的委托排序(深入分析)

关于C#基础知识回顾--反射(三)

关于C#基础知识回顾--反射(二)

浅谈二叉查找树的集合总结分析

关于C# TabPage如何隐藏的问题

Question:基于C#连续赋值的面试题介绍

C# 使用匿名函数解决EventHandler参数传递的难题

描述C#多线程中lock关键字的使用分析

C#中计算时间差中的小数问题解决

关于System.Convert的那些事儿

精品推荐
分类导航