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

 更新时间:2015年05月15日 11:25:52   作者:永远爱好写程序  
这篇文章主要介绍了一道关于C#参数传递的面试题,实例分析了C#参数传递的相关使用技巧,需要的朋友可以参考下

本文实例分析了一道关于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#程序设计有所帮助。

相关文章

  • C#实现文件与Base64的相互转换

    C#实现文件与Base64的相互转换

    本文主要介绍了C#实现文件与Base64的相互转换,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • C#有效防止同一账号多次登录(附三种方法)

    C#有效防止同一账号多次登录(附三种方法)

    这篇文章主要介绍了C#有效防止同一账号多次登录的方法,有效防止同一账号多次登录的方法很多,比如用数据库来记录用户登录情况、用Application来保存用户登录信息、用Cache来保存信息等,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • C#实现远程连接ORACLE数据库的方法

    C#实现远程连接ORACLE数据库的方法

    这篇文章主要介绍了C#实现远程连接ORACLE数据库的方法,通过自定义函数db_connection_test实现远程连接Oracle数据库的功能,是非常实用的技巧,需要的朋友可以参考下
    2014-12-12
  • C#实现DataTable映射成Model的方法(附源码)

    C#实现DataTable映射成Model的方法(附源码)

    这篇文章主要介绍了C#实现DataTable映射成Model的方法,以实例形式较为详细的分析了DataTable映射成Model的具体步骤与相关技巧,并附带了完整实例源码供读者下载,需要的朋友可以参考下
    2015-11-11
  • C#操作excel打印的示例

    C#操作excel打印的示例

    这篇文章主要介绍了C#操作excel打印的示例,帮助大家利用c#打印表格,提高办公效率,感兴趣的朋友可以了解下
    2020-10-10
  • C#中的扩展方法详解

    C#中的扩展方法详解

    “扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。”这是msdn上说的,也就是你可以对String,Int,DataRow,DataTable等这些类型的基础上增加一个或多个方法,使用时不需要去修改或编译类型本身的代码。
    2014-09-09
  • c# 异步编程入门

    c# 异步编程入门

    这篇文章主要介绍了c# 异步编程入门的相关资料,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-03-03
  • C#学习笔记- 浅谈数组复制,排序,取段,元组

    C#学习笔记- 浅谈数组复制,排序,取段,元组

    下面小编就为大家带来一篇C#学习笔记- 浅谈数组复制,排序,取段,元组。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • C# 禁用鼠标中间键的方法

    C# 禁用鼠标中间键的方法

    关于 C# System.Windows.Forms.NumericUpDown 控件,如何禁用鼠标中间键?
    2013-03-03
  • WPF中引入WindowsForms控件的方法

    WPF中引入WindowsForms控件的方法

    这篇文章主要介绍了WPF中引入WindowsForms控件的方法,结合实例形式分析了在WPF中调用Windows Forms控件的具体步骤与相关实现技巧,需要的朋友可以参考下
    2016-07-07

最新评论