码迷,mamicode.com
首页 > 其他好文 > 详细

C#值类型与引用类型

时间:2014-09-26 14:29:08      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   ar   strong   数据   sp   

存储不同:

值类型存储在堆栈中,引用类型存储在托管堆上.

值类型举例:

i=20;

j=i;

上面的语句在内存的两个地方存储值都是20;

引用类型举例:

bubuko.com,布布扣
    class Vector
    {
        public long value { get; set; }
    }
    class Program
    {
         static void Main(string[] args)
        {
            Vector x, y;
            x = new Vector();
            x.value = 30;
            y = x;
            Console.WriteLine(y.value);
            y.value = 50;
            Console.WriteLine(x.value);
            Console.ReadKey();
        }        
    }
View Code

上面的代码,x赋值,y的值也跟着改变,y赋值,x的值也跟着改变,结果为30和50

不一样的引用类型String

string s1,s2 ;
s1 = "123";
s2 = s1;
Console.WriteLine("s1:" + s1);
Console.WriteLine("s2:" + s2);
s1 = "456";
Console.WriteLine("s1:" + s1);
Console.WriteLine("s2:" + s2);
Console.ReadKey();

结果:s1:123

   s2:123

   s1:456

   s2:123

从结果可见,改变s1的值对s2没有影响,这是因为:字符串是不可改变的,修改其中一个字符串,就会创建新的string对象,而

另一个字符串不会发生任何变化.

小结:在C#中基本数据类型如bool和long都是值类型,如果声明一个bool变量,并给他赋予给另一个bool变量的值,

在内存中就会有两个bool值,如果以后修改第一个bool的值,第二个bool变量的值也不会改变.如果要把自己的类型

定义为值类型就应把它声明为一个结构.

 

C#值类型与引用类型

标签:style   blog   http   color   os   ar   strong   数据   sp   

原文地址:http://www.cnblogs.com/piaoguo/p/3994496.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!