深入.NET数据类型(2)

时间:2022-05-04
本文章向大家介绍深入.NET数据类型(2),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一.装箱和拆箱

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

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

    原因:

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

  示例代码:

       static void Main(string[] args)
        {

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

二.不同类型的参数传递

  1.值方式参数传递

    1)使用值类型作为参数

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

        int num1 = 3;
         int num2 = 5;
         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 = 10;


            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.使用引用类型作为参数

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

 int num1 = 3;
         int num2 = 5;
         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 = 10;


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