欢迎来到代码驿站!

.NET代码

当前位置:首页 > 软件编程 > .NET代码

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

时间:2021-01-10 11:02:32|栏目:.NET代码|点击:

本文实例分析了一道关于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);
}

结果显示如下:

结果分析:

由于实参变量和形参变量都是引用类型,它们都指向内存堆中的某一对象的地址,
函数是将实参变量指向的地址值复制了一份给形参变量,由于形参变量和实参变量指向堆中同一地址
由于是复制了一份,所以实参的地址在swap函数中是没有被改变的,所以最后输出的结果,实参的值和原来是完全一样的

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

例如:

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

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

上一篇:.NET Web开发之.NET MVC框架介绍

栏    目:.NET代码

下一篇:C#中正则表达式的3种匹配模式

本文标题:一道关于C#参数传递的面试题分析

本文地址:http://www.codeinn.net/misctech/42970.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有