C#中值类型与引用类型对比

- 值类型?

 值类型的变量直接包含这种类型的值,结构是值类型。

- 引用类型?

   引用类型的变量保存的是对此对象的引用,即实际数据的地址。引用类型不包含存储在变量中的实际数据,但它们包含对变量的引用。
   类(class)是引用类型。

-可以这样理解两者的区别:

   值类型相当于你的住房,而引用类型相当于你住房的地址,你可以将这个地址告诉任何一个朋友,他们都能够依赖这个地址找到你的家。

C#值类型与引用类型的比较


-结构和类的区别:

相同点:

  默认都有一个无参数的构造函数。

不同点:

   值类型(类)的值存在栈上。当类中写一个有参数的构造函数,默认无参数的构造函数被替代掉了。类中写结构函数参数列表中参数
   个数可以不确定。

   引用类型(结构)栈上存的的是地址,堆上存的是值。当结构中写一个有无参数的构造函数,默认的无参数的构造函数还存在,没有
   被替代掉,在结构中写构造函数,要把所有的字段都要完全赋值。

下面的代码展示了值类型和引用类型的区别:

    class class1
    {
        public int value = 0;
    }

    class Program
    {
        static void Main(string[] args)
        {
            int val1 = 0;
            int val2 = val1;
            val2 = 123;
            class1 ref1 = new class1();
            class1 ref2 = ref1;
            ref2.value = 123;
            Console.WriteLine("values:{0},{1}",val1,val2);
            Console.WriteLine("refs:{0},{1}",ref1.value,ref2.value);
            Console.ReadKey();


        }
    }
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值