- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C基础知识(需要特别注意的知识点)
《C#4.0本质论》学习笔记值类型和引用类型的区别值类型引用类型直接包含值,变量引用的位置就是值在内存中实际存储的位置。存储是对一个内存位置的引用(内存地址),要去那个位置才能找到真正的数据数据存储在栈的内存区域中数据存储在堆的内存区域在编译时确定内存量在运行时,从变量中读取内存地址,然后到指定内存地址中读取数据。复制数据的一个副本只复制数据的地址将new用于值类型,会使用默认值初始化内存new,调用构造函数生成一个对象(实例)装箱与拆箱装箱:将一个值类型转换成一个引用类型首先在堆中分配好内存;一次内存复制:栈上的值类型数据复制到堆上分配好的位置;对象或接口引用得到更新,指向堆上的位置。拆箱:将一个引用类型转换为值类型装箱频繁发生,会大幅影响性能;不允许在lock()语句中使用值类型。String 与StringBuilderString 对象称为不可变的(只读),因为一旦创建了该对象,就不能修改该对象的值StringBuilder此类表示值为可变字符序列的类似字符串的对象ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/fxref_mscorlib/html/3e108182-236f-5ccb-b5ee-e91a6d09cea0.htmString 对象串联操作总是用现有字符串和新数据创建新的对象。StringBuilder 对象维护一个缓冲区,以便容纳新数据的串联。如果有足够的空间,新数据将被追加到缓冲区的末尾;否则,将分配一个新的、更大的缓冲区,原始缓冲区中的数据被复制到新的缓冲区,然后将新数据追加到新的缓冲区。ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/fxref_mscorlib/html/3e108182-236f-5ccb-b5ee-e91a6d09cea0.htmString 或 StringBuilder 对象的串联操作的性能取决于内存分配的发生频率。ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/fxref_mscorlib/html/3e108182-236f-5ccb-b5ee-e91a6d09cea0.htmString 串联操作每次都分配内存,而 StringBuilder 串联操作仅当 StringBuilder 对象缓冲区太小而无法容纳新数据时才分配内存。因此,如果串联固定数量的 ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/fxref_mscorlib/html/3e108182-236f-5ccb-b5ee-e91a6d09cea0.htmString 对象,则 ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/fxref_mscorlib/html/3e108182-236f-5ccb-b5ee-e91a6d09cea0.htmString 类更适合串联操作。这种情况下,编译器甚至会将各个串联操作组合到一个操作中。如果串联任意数量的字符串,则 StringBuilder 对象更适合串联操作;例如,某个循环对用户输入的任意数量的字符串进行串联。? 和 ??的使用可空修饰符 ?:为了声明可以存null的值类型变量。int ?x=null;使用 ?? 运算符分配默认值:expression1??expression2.检查第一个表达式是否为null,如果为null,则返回第二个表达式。当前值为空的可以为 null 的类型被赋值给非空类型时将应用该默认值,如 int? x = null; int y = x ?? -1;。三、const和readonlyconst:既然用于修饰字段,又可以修饰局部变量;是在编译时确定的值,不可以在运行时改变;自动成为静态字段,不能显式声明为staticreadonly:只能用于字段(不能用于局部变量),指出字段值只能从构造函数中更改,或者直接在声明时指定。——可以在运行时赋值;readony字段既可以是实例字段,也可以是静态字段.四、静态成员和实例成员静态字段:主要存储的是对于类的数据,能由多个实例共享,需要使用static关键字实例字段:存储的是与对象关联的数据,只能从类的一个实例(对象)中访问实例字段。静态方法:不能直接访问一个类中的实例字段,必须获取类的一个实例,才能调用任一实例成员(方法或字段)。实例方法:将需要访问实例数据的方法声明为实例方法。静态构造函数:用来对类(而不是类实例)进行初始化。 运行时会在“访问类的一个静态方法或者字段时”自动调用静态构造函数。静态类:不包含任何实例字段(或方法),声明时用static 关键字。不能被实例化,不能被继承。继承:对一个现有的类型进行扩展,
文档评论(0)