OOP 2014年6月8日09:54:07


 1 【1】        //new的操作相当于根据类的定义在内存中创建一块独立的区域
2 //所以两个对象修改各自的属性不受影响。
3
4 Person p1 = new Person();
5 p1.Height = 180;//修改p1指向的对象的Height属性的值为180
6
7 Person p2 = new Person();
8 p2.Height = 190;
9
10 Console.WriteLine(p1.Height);//输出180
11 Console.WriteLine(p2.Height);//输出190


 1 【2】        //int、decimal、bool、byte、enum等基础类型(值类型)是传递拷贝;
2 //对象(引用类型)则是传递引用。
3 //因为基础类型不怎么占内存,而对象则比较占内存。
4 Person p1 = new Person();
5 p1.Height = 180;//修改p1指向的对象的height字段的值为180
6
7 Person p2 = p1;//p2指向p1当前指向的对象,引用类型
8 p2.Height = 190;
9
10 //读取p1指向对象的值
11 Console.WriteLine(p1.Height);//输出190
12 Console.WriteLine(p2.Height);//输出190
13
14 //函数间传递普通的类的对象也是引用传递
15 static void DotIt(Person p)
16 {
17 p.Height = 3000;
18 }
19 DotIt(p1);
20 Console.WriteLine(p1.Height);//输出3000
21 Console.WriteLine(p2.Height);//输出3000


 1【3】         Person p1 = null;//p1不指向任何的对象,
2 //如果p1之前指向过对象,则切断p1和对象间的关系
3
4 Person p1 = new Person();
5 p1.Height = 50;
6
7 p1 = null;
8 //以后如果碰到NullReferenceException,先看变量是不是指向了对象
9 p1.Height = 60;//p1没有指向任何对象
10 //所以无法“修改指向对象的height属性”,因此报错
11 //编译的错误和运行的错误


 1【4】        string s1 = "ww";
2 string s2 = "cc";
3
4 //不能实现所期望的,如果想要像值类型一样交换,则必须加上关键字ref
5 static void SwapString(string a, string b)
6 {
7 string temp = a;
8 a = b;
9 b = temp;
10 }
11 //SwapString和DotIt的区别:
12 //SwapString是想要修改变量的指向
13 //DotIt是修改变量指向的对象的状态
14 static void DotIt(Person p)
15 {
16 p.Height = 3000;
17 }
18
19 SwapString(s1, s2);
20 Console.WriteLine("{0},{1}", s1, s2);//输出ww,cc

a,b,tamp互相交换指向,不改变s1,s2的指向

OOP 2014年6月8日09:54:07,布布扣,bubuko.com

时间: 2024-10-15 00:47:30

OOP 2014年6月8日09:54:07的相关文章

OOP 2014年6月8日09:45:33

1 /// <summary> 2 /// 字段.方法.属性都可以叫做类的成员Member,它们都需要定义访问级别. 3 /// 访问级别的用处在于控制成员在哪些地方可以被访问,这样达到面向对象中"封装"的目的. 4 /// public:公共成员,完全公开,没有访问限制: 5 /// private:默认级别.私有成员, 在类的内部才可以访问: 6 /// internal:当前程序集内可以访问: 7 /// protected:保护成员,该类内部和继承类中可以访问. 8

2014年6月7日09:44:05

1 //int i传进来的的时候是复制了一份传进来,折腾的是复制品 2 static void DotIt(int i) 3 { 4 Console.WriteLine(i); 5 i++; 6 Console.WriteLine(i); 7 } 8 9 int i1 = 1; 10 DotIt(i1); 11 Console.WriteLine(i1); 12//输出结果为1 2 1 1 static void Swap(int i1, int i2) 2 { 3 int temp = i1;

字符串 2014年6月7日12:51:07

1.单个字符也可以表示为字符串,还可以有长度为0的字符串(就是"",空字符串).null和""的区别,String.IsNullOrEmpty 1 string s = " ";//" "不是empty 2 3 //s == "" 相等于 s == string.Empty 4 if (string.IsNullOrEmpty(s))//等价于s == null || s == "" 5

《程序员的思维修炼》摘抄start:2014年9月27日19:27:07

程序员的思维修炼:摘抄:考虑到社会中各个相关团体的复杂交互影响和社会的持续变化,在我看来当前最重要的两项技能就是: ?沟通能力: ?学习和思考能力.软件行业正在逐步提高沟通能力.特别是敏捷方法(见注解栏),强调了团队成员之间.最终客户和开发团队之间的沟通交流. 程序员需要不断地学习——不仅仅是学习新技术,还包括应用的问题域.用户社区的奇思妙想.同事的古怪习惯.行业的八卦新闻和项目演进的重要特征,我们必须学习学习再学习,持续不断地学习,然后把学习成果应用到解决日常遇到的一切新旧问题上. 专家精通者

2015年08月19日09:54:45

对象指针:1,对象指针通过操作其指向的内存完成具体的功能 -对象指针指向nil时,称此对象为空对象 -nil为对象指针的默认值 -空对象无任何功能与作用 2,获取对象指针指向的内存地址 -通过alloc或便利构造器获取 -通过方法获取 *局部对象指针 -作用域以大括号为界 -{ id obj: } *全局对象指针 -手动声明的成员变量 -属性声明的成员变量 *局部对象指针 -一般情况下使用(默认) -临时变量 *全局对象指针 -推荐全部使用属性 -一个对象为另一个对象的组成部分 -整个对象都需要

2014年4月23日 10:22:08

step 1 : 做tcp网络编程,要解析一批批的数据,可是数据是通过Socket连接的InputStream一次次读取的,读取到的不是需要转换的对象,而是要直接根据字节流和协议来生成自己的数据对象. 按照之前的编程思维,总是请求然后响应,当然Socket也是请求和响应,不过与单纯的请求响应是不同的. 这里Socket连接往往是要保持住的,也就是长连接,然后设置一个缓冲区,网络流不断的追加到缓冲区.然后后台去解析缓冲区的字节流. http://cuisuqiang.iteye.com/blog/

2014年6月6日22:35:21

sln:使用解决方案文件(后缀为sln的文件)表示一个项目组,他通常包含一个解决方案中所有的项目信息.一个sln文件通常由三部分组成:1. 文件版本.2. 工程信息.3. 全局设置. csproj:它是"C Sharp Project"的缩写...net 开发环境中建立项目时,会产生 .csproj 文件,这是C#的项目文件,其中记录了与项目有关的相关信息,例如包含的文件,程序的版本,所生成的文件的类型和位置的信息等. 1 //换行.看起来是两个,其实\和后面的是一体的 2 char

字符串2014年6月7日15:56:54

商业银行 具有创造活期存款的垄断经营特权,并主要发放工商业贷款的金融中介机构 混业经营 银行业.证券业和保险业的相互渗透与一体化经营 分业经营 银行业.证券业和保险业的业务严格分开,禁止业务交叉,彼此的资金不许相互融通 商业银行的流动性 商业银行满足存款人提取现金.支付到期债务和借款人正常贷款需求的能力 现金头寸 现金资产是指现金与现金等值的可随时变现流动性资产 贷款承诺 为借款人提供一定的贷款额度,在承诺期间借款人有权在任何时间使用这笔贷款 贷款出售 商业银行在贷款形成之后,将贷款债权出售给第

2014年4月28日 乱侃人际关系,反思学习方式

body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;}