深入.NET数据类型(2)

一.装箱和拆箱

  将值类型转换为引用类型的过程称为装箱,反之称为拆箱

                        深入.NET数据类型(2)

        深入.NET数据类型(2)

  实际开发尽量避免 装/拆 箱

    原因:

      装/拆 箱都会降低程序性能

  示例代码:

    

       static void Main(string[] args)
        {

            ;
            object obj = num;  //有装箱操作
            int result = (int)obj; //拆箱操作
            //要想拆箱,先有装箱。
        }   

二.不同类型的参数传递

  1.值方式参数传递

    1)使用值类型作为参数

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

        ;
         ;
         Console.WriteLine("交换前:num1的值{0}\tnum2的值{1}", num1, num2);
         //最简单的两个变量交换
         //借助第三方
         Change(num1, num2);
         Console.WriteLine("交换后:num1的值{0}\tnum2的值{1}", num1, num2);
     static void Change( int num1, int num2)
        {
            int temp = num1;
            num1 = num2;
            num2 = temp;
        }        

    2)使用引用类型作为参数

      以引用类型作为参数进行值方式传递参数时,能改变引用类型参数的值

    static void Main(string[] args)
        {
          Voter voter = new Voter();
            SE se = new SE();
            se.popularity = ;

            voter.Vote(se);

            voter.Vote(se);

            Console.WriteLine(se.popularity);

        }

      public void Vote(SE se)
        {
            se.popularity++;
        }

 public class SE
    {
        public int popularity;
    }        

  2.引用方式参数传递(ref)

    1.使用引用类型作为参数

      以值类型作为参数进行引用方式传递参数时,能改变值类型参数的值

 ;
         ;
         Console.WriteLine("交换前:num1的值{0}\tnum2的值{1}", num1, num2);
         //最简单的两个变量交换
         //借助第三方
         Changeref num1,ref num2);
         Console.WriteLine("交换后:num1的值{0}\tnum2的值{1}", num1, num2);
     static void Change(ref int num1,ref int num2)
        {
            int temp = num1;
            num1 = num2;
            num2 = temp;
        }        

    2.使用引用类型作为参数

      以值引用型作为参数进行引用方式传递参数时,能改变引用类型参数的值

 static void Main(string[] args)
        {
          Voter voter = new Voter();
            SE se = new SE();
            se.popularity = ;

            voter.Vote(ref se);

            voter.Vote(ref se);

            Console.WriteLine(se.popularity);

        }

      public void Vote(ref SE se)
        {
            se.popularity++;
        }

 public class SE
    {
        public int popularity;
    }        
上一篇:BZOJ 1093 [ZJOI2007] 最大半连通子图(强联通缩点+DP)


下一篇:javaFX笔记----ComboBox模仿qq账号下拉框删除账号