文章类型: .NET
关键词: C#,参数传递,值方式,引用方式
内容摘要: C#中值方式和引用方式传递参数的基本区别。

C#类的方法:参数传递

2015/7/17 10:49:35    来源:Root    阅读:

一、值方式传递参数:

    值方式传递参数传递时,参数可以是引用类型,也可以是值类型。


1.  使用引用类型做参数

    例:使用员工类(SE)作为参数,实现员工投票功能(每投一票,员工人气值+1

          class Voter                 

          {                     

            public void Vote(SE se)           

           {              

              //人气值+1               

              se.Popularity++;           

            }                 

          }     

          //测试相关代码                 

          SE zhang=new SE();                 

          zhang.Name=”张三”;                 

          zhang.Popularity=10;                 

          Voter v=new Voter();                 

          v.Vote(zhang);                 

          Console.Write(”姓名:{0},人气值:{1}“,zhang.Name,zhang.Popularity);

而输出的结果为:姓名:张三,人气值:11

因此,当类作为参数传递时,参数被修改,类成员的值也会被修改,其他引用类型的参数也是如此,如数组。


  2.  使用值类型作为参数:

      class Voter                 

        {                     

           public void Vote(StructSE se)           

           {             

               //人气值+1             

               se.Popularity++;         

            }             

        }           

      //测试相关代码      

        StructSE zhang=new StructSE ();          

        zhang.Name=”张三”;               

        zhang.Popularity=10;                

        Voter v=new Voter();                  

        v.Vote(zhang);          

        //相当于传递进zhang的值副本,对于原值没有影响     

        Console.Write(”姓名:{0},人气值:{1}“,zhang.Name,zhang.Popularity);

而输出的结果为:姓名:张三,人气值:10

因此,以值类型做为参数进行值方式传递参数时,不能改变值类型参数的值。

 

二、引用方式传递参数:

    在使用引用方式传递参数时,参数同样可以是引用类型,也可以是值类型。

    而是用引用方式传递参数时,在定义方法和调用方法时都要使用ref关建字。


1.       使用引用类型作为参数,将投票方法要修改如下:

       public void Vote(ref SE se)   

       {            

            //人气值+1           

            se.Popularity++;                

        }                

        //而调用时代码修改如下:        

         Voter v=new Voter();       

            v.Vote(ref zhang);

    2.  使用值类型作为参数时投票方法和调用与使用引用类型作为参数的修改类似。

    且经过验证,无论引用方式传递引用类型,还是值类型,都会保存方法中的修改。

 

 

三、小结:

    使用值方式(不用ref修饰)传递值类型参数时,参数在方法中的修改不会保留。

    使用值方式(不用ref修饰)传递引用类型参数时,参数在方法中的修改会保留。

    使用引用方式(用ref修饰)传递值类型或引用类型参数时,参数在方法中的修改都会保留。


↑ 上一篇文章:C#类的方法:构造函数 关键词:C#,构造函数,方法重载 发布日期:2015/7/17 10:45:13
↓ 下一篇文章:C#基本语法:值类型与引用类型 关键词:C#,值类型,引用类 发布日期:2015/7/17 10:50:49
相关文章:
C#中DataGridView的多表数据展示的方法总结 关键词:C#,DataGridView,多表数据,展示,方法,总结 发布日期:2015-07-18 12:01
C#的WinForm开发中AutoComplete 输入提示、自动补全 关键词:C#,CSharp,WinForm,TextBox,AutoComplete,输入提示,自动补全.. 发布日期:2016-01-21 21:08
Java、C#编程逻辑训练题(见上一篇)的参考答案 关键词:C#,C,Sharp,Java,java,编程逻辑,训练题,if,switch,while,fo.. 发布日期:2015-07-22 16:34
相关目录:.NET
我要评论
正在加载评论信息......