首页 > 代码库 > 零碎知识点

零碎知识点

零碎知识点

关于 ? 和 ??

            int? p = null;

            int res = p * 2 ?? 5;

?代表这个类型是可空的,而??是为了应对当出现空值的时候所默认的值

可空类型总是基于另一个叫做基础类型的已经被声明的类型

可以从任何值类型创建可空类型. 包括预定义的简单类型

不能从引用类型或其他可空类型创建可空类型

不能在代码中显示声明可空类型, 只能声明可空类型的变量 .

浅比较和深比较(引用类型)

浅比较:   如果引用类型相等,内存中指向同一个对象,那么返回ture,否则为false,即便两个对象的其他方面都完全相等

深比较:  委托比较 引用类型是否拥有相容的数目的成员,并且调用列表相匹配,那么返回true.   string的比较也是深比较,它们比较字符串长度和大小写敏感内容

带有命名空间名称和类名的整体字符串被称为完全限定名

无用字段别序列化 

节省空间,类型在序列化后往往会存储在某个地方,如数据库,硬盘或内存中,如果一个字段在反序列化后不需要保持状态,那它就不应该被序列化,这会占用宝贵的空间资源,

反序列化后字段信息已经没有意义了.

由于业务原因不允许被序列化.列入明文密码不应该被序列化后一同保存在文件中.

如果字段本身所对应的类型在代码中未被设定为可序列化,那它就该标注为不可序列化

类型被添加Serializable属性后,默认所有的字段全部能够被序列化.

特性 Attribute

可以声明式地为代码中的目标元素添加注解.运行时可以通过查询这些托管模块中的元数据信息,达到改变目标元素运行时行为的目的.

其中System.Runtime.Seriazation有以下四个特性:

OnDeseralizedAttribute,当它应用于某方法时,会指定在对象反序列化后立即调用此方法

OnDeseralizingAttribute, 当它应用于某方法时,会指定在反序列化对象时调用此方法

OnSerializedAttribute ,如果对象使徒应用于某方法,则应指定在序列化该对象后是否调用该方法.

OnSeralizingAttrubute,当它应用于某个方法时,会指定在对象序列化前调用此方法.

零碎知识点