1.c#访问修饰符有哪些,有何异同?
private:私有类型,只用当前类可以访问
protected:访问包含类或者类派生的类
internal:程序集类型,在相同的命名空间内可以访问
public:访问成员没有限制,属于最高级别访问权限
protected internal:访问仅限于包含类派生的当前程序集或者类型
也就是同一程序集对象,或者该类及其子类可以访问 (一般不用写)
2.CTS,CLS,CLR ?
CTS:通用类型系统,实现com的变量兼容类型,而且还定义通用用户自定义类型的方式来进行类型扩展。
CLS:通用语言规范,制定了一种以.ent 平台为目标的语言所必须支持的最小特征,以及该语言与其他.net语言之间实现互操作性所需要的完备特征
CLR:公共语音运行库,CLR 是CTS的实现,CLR是应用程序的执行引擎和功能齐全的类库因为是在CLR监控下运行代码,称为托管代码,所以安全检查和垃圾回收
3.类和结构的异同?
class:是面向对象的基本概念,是一种自定义数据结构类型,通常包含字段, 属性,方法,构造函数,索引器,操作符等。所用的类都继承system.object 类
struct:是一种值类型,用于将一组相关的信息变量组织为一个单一的变量实体,所用结构都继承system.valuetype,因此是一种值类型
相同点:语法类似
不同点:
calss 引用类型 struct 是值类型 不具有多态性
calss 表现为行为 struct常用于存储数据
calss 可以继承类和接口 struct 直接接口继承
calss 可以声明无参构造函数,可以声明析构函数,struct 只能声明带参数的构造函数,且不能声明析构函数
calss 需要new实例化 struct 可以不使用new来实例化,所以状态未分配
4.抽象类和接口异同?
接口:包含一组虚方法的抽象类型,其中每一种方法都有名次,参数,返回值。接口方法不能包含任何实现
抽象类:多个派生类共享基类的公共定义,可以提供抽象方法,也可以提供非抽象方法,抽象非不能实例化,
必须通过继承实现抽象方法,抽象类不能使用new,也不能被密封。
不同点:接口实现多继承 抽象类不能实现多继承
接口定义抽象规则,抽象类可以定规则,还可以定义实现成员
接口是一组行为规范,抽象类是一个不完全的类
接口可以作用于值类型,引用类型,抽象类只能作用于引用类型
5 .序列化与反射的概念以及他们各自的作用?
反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。
您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。
序列化:序列化是将对象转换为容易传输的格式的过程。
例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象