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

  

运行结果:

C# 值类型和引用类型等值判断的更多相关文章

  1. .net学习之.net和C#关系、运行过程、数据类型、类型转换、值类型和引用类型、数组以及方法参数等

    1..net 和 C# 的关系.net 是一个平台,C#是种语言,C#语言可以通过.net平台来编写.部署.运行.net应用程序,C#通过.net平台开发.net应用程序2..net平台的重要组成FC ...

  2. 枚举|标志枚举+|(或)和&(与)运算|类型转换|值类型和引用类型|传参|异常|垃圾回收

    枚举部分 enum 关键字用于声明枚举,即一种由一组称为枚举数列表的命名常量组成的独特类型. 通常情况下,最好是在命名空间内直接定义枚举,以便该命名空间中的所有类都能够同样方便地访问它. 但是,还可以 ...

  3. [No0000B5]C# 类型基础 值类型和引用类型 及其 对象判等 深入研究1

    引言 本文之初的目的是讲述设计模式中的 Prototype(原型)模式,但是如果想较清楚地弄明白这个模式,需要了解对象克隆(Object Clone),Clone其实也就是对象复制.复制又分为了浅度复 ...

  4. C# - 值类型、引用类型&走出误区,容易错误的说法

    1. 值类型与引用类型小总结 1)对于引用类型的表达式(如一个变量),它的值是一个引用,而非对象. 2)引用就像URL,是允许你访问真实信息的一小片数据. 3)对于值类型的表达式,它的值是实际的数据. ...

  5. Swift 值类型和引用类型

    Swift中的类型分为两类:一,值类型(value types),每个值类型的实例都拥有各自唯一的数据,通常它们是结构体,枚举或元组:二,引用类型(reference types),引用类型的实例共享 ...

  6. 04.C#类型系统、值类型和引用类型(二章2.2-2.3)

    今天要写的东西都是书中一些概念性的东西,就当抄笔记,以提问对话的方式将其写出来吧,说不定以后面试能有点谈资~~~ Q1.C#1系统类型包含哪三点特性? A1.C#1类型系统是静态的.显式的和安全的. ...

  7. 数往知来C#之接口 值类型与引用类型 静态非静态 异常处理 GC垃圾回收 值类型引用类型内存分配<四>

    C# 基础接口篇 一.多态复习 使用个new来实现,使用virtual与override    -->new隐藏父类方法 根据当前类型,电泳对应的方法(成员)    -->override ...

  8. .NET六大剑客:栈、堆、值类型、引用类型、装箱和拆箱

    .NET六大剑客:栈.堆.值类型.引用类型.装箱和拆箱 一.“堆”,“栈”专区 这两个字我相信大家太熟悉了,甚至于米饭是什么?不知道...“堆”,“栈”是什么?哦,这个知道... 之前我也写过一篇堆栈 ...

  9. c#1所搭建的核心基础之值类型和引用类型

    这个主题很重要,在.NET中做的一切其实都是在和一个值类型或者引用类型打交道. 现实世界中的值和引用 假定你在读一份非常棒的东西,希望一个朋友也去读他.于是你到复印室里复印了一份.这个时候他获得了属于 ...

随机推荐

  1. git:GitLab代码回滚到特定版本

    在当前branch上多次commit代码并且push后,发现不符合要求,需要回滚到特定的版本.步骤如下: 1.查找commitId (1)用命令行打开git项目路径,输入git log命令查看comm ...

  2. 使用RedisDesktopManager客户端无法连接Redis服务器问题解决办法

    是否遇到安装完成后连不上的问题? 那么这篇教程能解决. 执行步骤: 1.修改redis文件夹下redis.cong文件,在bind 127.0.0.1行前面加#注释掉这一行,使能远程连接(默认只能使用 ...

  3. centos7下配置ftp服务器

    第一步,安装vsftpd这款ftp服务器软件,yum install -y vsftpd 第二步,设置vsftpd服务开机自启动,然后重启服务,查看ftp服务端口,centos6命令如下: #chkc ...

  4. span 不使用float 靠右对齐且垂直居中

    一般让div 里的span 靠右对齐用的方法比较多的是float:right. 这次由于各种原因我不想用float 先看效果: HTML 部分 <div class="customer ...

  5. Android NFC M1卡读写&芯片卡读写(CPU卡读写)(RFID读写)

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/sgn5200/article/detai ...

  6. 缓存:修改Hosts不生效

    修改Hosts为何不生效,是DNS缓存? - Barret李靖 - 博客园https://www.cnblogs.com/hustskyking/p/hosts-modify.html 换个未打开过的 ...

  7. 备份数据库的shell

    #!/bin/bash #定义备份数据库名 dbname=yourdbname #定义备份数据库的用户名和密码 dbuser=yourdbuser dbpasswd=yourdbpasswd #数据库 ...

  8. nodejs 管道判断

    // 不优雅的判断管道判断 let d process.stdin.on('data', chunk => { d = String(chunk) }) setTimeout(() => ...

  9. 分类的性能评估:准确率、精确率、Recall召回率、F1、F2

    import numpy as np import pandas as pd from sklearn.feature_extraction.text import TfidfVectorizer f ...

  10. 使用二进制的方式部署 K8S-1.16 高可用集群

    一.项目介绍 项目致力于让有意向使用原生kubernetes集群的企业或个人,可以方便的.系统的使用二进制的方式手工搭建kubernetes高可用集群.并且让相关的人员可以更好的理解kubernete ...