C# 基础

C# 基础

C#基础加强(10)之对象序列化(二进制)

介绍对象序列化是将对象转换为二进制数据(字节流),反序列化是将二进制数据还原成对象。对象的非持久态的,不仅在程序重启、操作系统重启会造成对象的丢失,就是退出函数范围等都可能造成对象的消失,而序列化与反序列化就是为了完成对象的持久化。使用新建可序列化的实体类:[Serializable]//该特性标记

2019-08-15
86 0

C#基础加强(9)之委托和事件

委托简介委托是一种可以声明出指向方法的变量的数据类型。声明委托的方式格式:delegate<返回值类型>委托类型名(参数),例如:delegatevoidMyDel(stringstr)//注意:这里除了前面的delegate关键字,剩下部分和声明一个函数相同,但是MyDel不是函数名,

2019-08-11
81 0

C#基础加强(8)之ref与out

介绍给方法传递普通参数时,值类型传递的是拷贝的对象,而引用类型传递的是对象的引用。它们都不能在函数内部直接修改外部变量的引用(不是修改引用类型的属性),而使用ref或out关键字就可以实现。作用ref:在方法内部修改外部变量的引用。out:方法内部给外部变量初始化,相当于一个函数多个返回值。注意事项

2019-08-08
79 0

C#基础加强(7)之运算符重载

介绍C#允许用户定义的类型通过使用operator关键字定义静态成员函数来重载运算符。注意必须用public修饰且必须是类的静态的方法。但并非所有内置运算符都可以被重载,详见下表:运算符可重载性 +、-、!、~、++、--、true、false 可以重载这些一元运算符, 

2019-08-05
80 0

C#基础加强(6)之引用相等

介绍在C#中可以通过object.ReferenceEquals(obj1,obj2)方法来判断两个变量引用的是不是同一个地址,如果是,那么就是引用相等。引用相等是针对引用类型变量来说的,因为值类型变量存储在栈内存,不存在引用情况。普通引用类型1、有如下实体类:classPerson{private

2019-08-02
77 0

C#基础加强(5)之装箱与拆箱

定义装箱:将值类型赋值给Object类型变量时,就是装箱操作,即包装为Object对象。因为值类型都是ValueType类型,而ValueType页继承了Object(CLR内部处理),所以值类型可以转为Object类型。拆箱:将Object类型变量赋值给值类型的时候就是拆箱操作,需要做显示转换。示

2019-07-29
77 0

C#基础加强(4)之秒懂IL、CTS、CLS和CLR

IL(IntermediateLanguage)中间语言。.Net平台下不只有C#语言,还有VB.Net、F#等语言。IL是程序最终编译的可执行二进制代码(托管代码),类似于Java中的class字节码文件,也叫中间语言,不同的语言最终都编译成标准的IL(MSIL),这样在.Net平台下不同语言之间

2019-07-25
77 0

C#基础加强(3)之值、引用类型及结构体

值、引用类型介绍引用类型派生自System.Object,而值类型均隐式派生自System.ValueType。其实System.ValueType也是继承自System.Object,只不过它是特立独行的一个分支。值类型数值类型、布尔值、结构、枚举都是值类型。例:[TestFixture]publ

2019-07-23
81 0

C#基础加强(2)之密闭类、静态类及扩展方法

密闭类简介密闭类是被sealed关键字修饰的类,密闭类不能有子类。一般只有系统的一些基本类声明为密闭类,例如String类。相关面试题是否可以编写一个类继承自String类?我们可以查看String类的声明,如下:[ComVisible(true)][__DynamicallyInvokable][

2019-07-18
78 0

C#基础加强(1)之索引器

介绍索引器,初学者可能听起来有些陌生,但其实我们经常会用到它,例如://字符串的索引器stringstr="helloworld";charc=str[4];//获取到字符串中索引为4的字符//字典的索引器varinfo=newDictionary<string,strin

2019-07-14
77 0