关于C#引用类型赋值

  //Jack的账户信息 账号、余额、姓名、年龄
            PersonAccount Jack = new PersonAccount("201506", 2000, "Jack", 20);
            //Tom的账户信息
            PersonAccount Tom = new PersonAccount("201507", 5000, "Tom", 55);
            /**
             *Jack、Jack2为引用类型,所以赋值时,Jack只是将引用地址赋给Jack2,两者指向了同一块内存区域A;
            **/
            PersonAccount Jack2 = Jack;
            //Jack 从账户取走500,剩余1500
            Jack.AccountMoney = 1500;
            MessageBox.Show("Jack2的账户(201506)余额为:" + Jack2.AccountMoney);//输出1500

            /**
             *此时Tom将引用地址赋给Jack,两者指向了同一块内存区域B。Jack2的引用地址不变,指向内存区仍为A;
             **/
            Jack = Tom;
            MessageBox.Show("Jack2的账户(201506)余额为:" + Jack2.AccountMoney);//输出1500
            MessageBox.Show("Jack的账户(201507)余额为:" + Jack.AccountMoney);//输出5000
时间: 2024-09-19 22:03:56

关于C#引用类型赋值的相关文章

js引用类型赋值,深拷贝与浅拷贝

JS中引用类型使用等号“=” 赋值,相当于把原来对象的地址拷贝一份给新的对象,这样原来旧的对象与新的对象就指向同一个地址,改变其中一个对象就会影响另外那个对象,也就是所谓的浅拷贝.例如: var arr = ["One","Two","Three"]; var arrto = arr; arrto[1] = "test"; document.writeln("数组的原始值:" + arr + "&

从一个简单例子来理解js引用类型指针的工作方式

? 1 2 3 4 5 6 7 <script> var a = {n:1};  var b = a;   a.x = a = {n:2};  console.log(a.x);// --> undefined  console.log(b.x);// --> [object Object]  </script> 上面的例子看似简单,但结果并不好了解,很容易把人们给想绕了--"a.x不是指向对象a了么?为啥log(a.x)是undefined?".&

定义类+类实例化+属性+构造函数+匿名类型var+堆与栈+GC回收机制+值类型与引用类型

为了让编程更加清晰,把程序中的功能进行模块化划分,每个模块提供特定的功能,而且每个模块都是孤立的,这种模块化编程提供了非常大的多样性,大大增加了重用代码的机会. 面向对象编程也叫做OOP编程 简单来说面向对象编程就是结构化编程,对程序中的变量结构划分,让编程更清晰. 类的概念: 类实际上是创建对象的模板,每个对象都包含数据,并提供了处理和访问数据的方法. 类定义了类的每个对象(称为实例)可以包含什么数据和功能. 类中的数据和函数称为类的成员:数据成员        函数成员 数据成员: 数据成员

理解C#引用类型

掉坑里了,因为对引用类型的理解不够深,导致了项目出现了Bug. 首先整理一下C#基础:引用类型赋值赋的是对象的指针,而值类型赋值是copy副本,这是引用类型和值类型的区别之一. 上代码: 1 class Program 2 { 3 static void Main(string[] args) 4 { 5 var obj = MyClassA.PropertyA; 6 Console.WriteLine(string.Join(",", MyClassA.PropertyA.Foo))

值类型和引用类型及参数传递

值类型和引用类型: C#数据类型分为两大类:值类型和引用类型. 值类型数据主要有:结构体struct,枚举体enum,布尔型bool,浮点型,整型. 引用类型数据主要有:数组,字符串,接口,委托,类. 值类型和引用类型的区别: 引用类型继承自System.Object,值类型继承自System.ValueType. 引用类型保存到内存的堆heap中,值类型保存在内存的堆栈stack中.在.net中,栈的内存是自动释放的,而堆会有垃圾回收器GC来释放. 引用类型可以派生出新的类型,而值类型不可以.

数据类型(1) - 值类型和引用类型

和javascript等脚本语言不同,C#基本上可以说是强类型的编程语言.这意味着,任何变量在编译时(而不是运行时)就必须要有一个类型.直到c#4.0,引入了动态类型为止.c#的弱类型体现在其类型object中.任何变量都可以是object类型的,也就是说他们在编译时没有类型,肯定能通过编译.但错误将会在运行时才发生. 强类型的好处有很多,例如可以保证类型安全(否则将会发生运行时错误),可以享受IDE带来的智能提示等,不容易出错(出错可以在编译的时候就知道).c#有很多数据类型,而他们可以分为两

C# 值类型与引用类型的异同

int,bool,decimal等为值类型 List,Stream等为引用类型 用等号设置一个值类型变量等于另一个变量时,会完成复制,之后这两个变量相互之间没有任何影响: 对引用使用等号时,这两个引用就会指向同一个对象 对于值类型和引用类型,变量声明和复制都是一样的. int howMany = 25: bool Scary = true; List<double> temperatures = new List<double>(); int和bool为值类型,List为引用类型,

.NET之值类型与引用类型

C#是类型安全的开发语言,它的数据类型分为值类型(Value Type)和引用类型(Reference Type)两种. 一.值类型(Value Type) 字     符:char U+0000 - U+ffff 16位 Unicode字符(其实字符也是一种整型) 整     型:sbyte.byte.short.ushort.int.uint.long.ulong 浮 点 型:float(7位有效为).double(15到16位有效位) decimal:128位数据类型,相比浮点型而言具有更

值类型和引用类型的特征

1. 值类型和引用类型的赋值 1.1. 值类型赋值,直接将值复制一份 var num1 = 10; var num2 = num1; 上面两句代码,在内存中的体现为: var num1 = 10;表示变量num1存储的是数字10 将数据拷贝一份,也就是将10拷贝一份,这个时候内存中有两个10 将拷贝的10赋值给num2 1.2. 引用类型赋值,是将地址复制一份 var p = {name:"张三", age:19}; var p1 = p; 上面两句代码,在内存中的体现为: var p