C# 值类型和引用类型等值判断

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 堆和栈
{
    class Program
    {
        static void Main(string[] args)
        {

            #region 引用类型

            // s : 对象的引用【存储在栈中】
            //new Student() 【对象存储在堆中】
            Student s = new Student();//引用类型
            s.Age = 88;
            Console.WriteLine("初始对象s的Age是:" + s.Age.ToString()); // 输出:88

            Student s2 = s;//给引用类型赋值的时候,其实只是赋值了对象的引用【即是在栈中赋值了对象的引用,s和s2的引用地址都指向同一个堆上的地址】
            s2.Age = 44;
            Console.WriteLine("引用类型赋值后对象s2的Age是:" + s2.Age.ToString());// 输出:44
            Console.WriteLine("引用类型赋值后对象s的Age是:" + s.Age.ToString());// 输出:44

            #endregion

            #region  值类型

            //局部变量 【存储在栈中】
            int aaa = 0;//值类型
            Console.WriteLine("初始aaa变量的值是:" + aaa.ToString()); // 输出:0
            int aaa2 = aaa;//给值类型变量赋值的时候,是创建了一个副本(即克隆,aaa2 和aaa没一毛钱关系)
            aaa2 = 99;

            Console.WriteLine("值类型赋值后aaa变量的值是:" + aaa.ToString()); // 输出:0
            Console.WriteLine("值类型赋值后aaa2变量的值是:" + aaa2.ToString()); // 输出:99

            #endregion

            #region 等值判断

            int i = 3;
            int j = 3;
            Console.WriteLine("值类型等值判断:"+(i == j).ToString());// 输出:true ,值类型等值判断直接比较值本身

            Student a = new Student();
            a.Age = 3;
            Student b = new Student();
            b.Age = 3;
            Console.WriteLine("引用类型等值判断:"+(a == b).ToString());// 输出:false ,引用类型等值判断的是栈中的地址,不是比较数据的本身

            //引用类型变量的赋值操作,复制的是引用,即内存地址,由于赋值后二者都指向同一内存地址,所以改变其中一个,另一个也会跟着改变,二者就像绑定在了一起。
            Student c = a;
            Console.WriteLine("引用类型等值判断:" + (a == c).ToString());// 输出:true ,引用类型等值判断的是栈中的地址,不是比较数据的本身

            #endregion


            Console.ReadKey();


        }
    }
}

 

运行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值