天轰穿C#教程之值类型[原创]

  这两种类型存储在内存的不同地方:值类型存储在堆栈中,而引用类型存储在托管堆上。注意区分某个类型是值类型还是引用类型,因为这种存储位置的不同会有不同的影响。

  

  例如,int是值类型,这表示下面的语句会在内存的两个地方存储值20:

  

  using System;

  

  namespace预定义类型

  

  {

  

  classProgram

  

  {

  

  staticvoid Main(string[] args)

  

  {

  

  int i = 20;

  

  int t = i;                           //将i的值赋给t

  

  Console.WriteLine("t 的值为 {0}", t);//打印出结果

  

  t = 100;                             //改变变量t的值

  

  Console.WriteLine("i 的值为 {0}", i);//改变t的值后再次打印出结果

  

  Console.ReadLine();

  

  }

  

  }

  

  }

  

  执行后的效果如图2-14

  

  图2-14

  

  小天:我明白了,因为值类型的变量是直接存储值。所以当申明变量i并赋值为20的时候,在内存中就直接开辟一片空间将20存起来。再次申明变量t的时候,将i作为值交给变量t,其实给的也是20这个值。t得到值后,也重新开了一片空间放起来。后面我们再次修改t的值的时候,其实就是将t的空间中的20扔了出来,然后放了个100进去。可是这个过程压根就影响不到i空间的值。

  

  总结下,在C#中,基本数据类型如bool和long都是值类型。如果声明一个bool变量,并给它赋予另一个bool变量的值,在内存中就会有两个bool值。如果以后修改第一个bool变量的值,第二个bool变量的值也不会改变。这些类型是通过值来复制的。

  

  本文为天轰穿原著,转载请注明出处及作者!

原文地址:https://www.cnblogs.com/thcjp/p/2733351.html