摘要: 普通参数是“值类型传递拷贝,引用类型传递引用”,但是都不能在函数内部修改外部变量的指向(p.Age=5不是可以吗?),这时候要用ref或者out(相当于把变量都传进去了),他们的作用不同:ref的作用“方法内部修改外部变量的引用”;out的作用“方法内部给外部变量初始化,相当于一个函数多个返回值”。 阅读全文
posted @ 2018-01-04 03:46 LolitaGIS的笔记 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 字符串不可变性,字符串的‘暂存池’两个特性 字符串是引用类型,程序中会存在大量的字符串对象,如果每次都创建一个字符串对象,会比较浪费内存、性能低,因此CLR做了“暂存池”(拘留池,缓冲池,暂存池),在一些情况下对于字符串对象进行了重用。 面试题:上面的代码有几个字符串对象。 答案:三个字符串对象s1 阅读全文
posted @ 2018-01-04 03:40 LolitaGIS的笔记 阅读(334) 评论(0) 推荐(0) 编辑
摘要: 查看判断两个对象是否是同一个对象要用:object.ReferenceEquals(); 因为“==”默认值是比较两个对象是不是同一个对象。所以有时候两个对象的内容相等,但是比较后还是false。 Object的Equals方法也比较两个变量指向的是否同一个对象;对象如果override 了Equa 阅读全文
posted @ 2018-01-04 03:30 LolitaGIS的笔记 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 值类型赋值给Object类型变量的时候,会发生装箱:包装成Object。ValueType不也是继承自Object吗(CLR内部处理); Object类型变量赋值给值类型赋值的时候会发生拆箱,需要做显式转换。 下面几句代码有没有错,解释一下内存是怎么变化的 阅读全文
posted @ 2018-01-04 03:15 LolitaGIS的笔记 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 1.缩写的全称:CTS是通用类型系统(Common Type System)CLR是公共语言运行时(Common language runtime)CLS是公共语言定义(Common Language Specification) 2..Net平台下不只有C#语言,还有VB.Net、F#等语言。IL 阅读全文
posted @ 2018-01-04 03:12 LolitaGIS的笔记 阅读(501) 评论(0) 推荐(0) 编辑
摘要: 什么是“引用类型”:引用类型派生自System.Object什么是“值类型”:值类型均隐式派生自System.ValueType(ValueType其实也是继承自Object,不过是特立独行的一个分支)值类型有哪些:数值类型(int、long、double、float、char)、bool、结构体、 阅读全文
posted @ 2018-01-04 03:06 LolitaGIS的笔记 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 结构体(很少自己写):一种值类型,拷贝副本。对于结构,不像类那样存在继承。一个结构不能从另一个结构或类继承。但是,结构从基类 Object 继承。 struct Person { public int Age{get;set;} public String Name { get; set; } } 阅读全文
posted @ 2018-01-04 03:05 LolitaGIS的笔记 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 1.深拷贝是指源对象与拷贝对象互相独立,其中任何一个对象的改动都不会对另外一个对象造成影响。举个例子,一个人名叫张三,后来用他克隆(假设法律允许)了另外一个人,叫李四,不管是张三缺胳膊少腿还是李四缺胳膊少腿都不会影响另外一个人。比较典型的就是Value(值)对象,如预定义类型Int32,Double 阅读全文
posted @ 2018-01-04 02:54 LolitaGIS的笔记 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 1、密闭类是修饰为sealed的类, sealed不能有子类。一般只有系统中的一些基本类声明为sealed。 面试题:是否可以编写一个类继承自String类? 2、静态类:声明为static的类,不能实例化,只能定义static成员。 3、C#3.0特性:扩展方法。声明静态类,增加一个静态方法,第一 阅读全文
posted @ 2018-01-04 01:17 LolitaGIS的笔记 阅读(313) 评论(0) 推荐(0) 编辑