1.const和ReadOnly的区别
const是静态常量:是指编译器在编译时会对常量进行解析,并将常量的值替换成初始化的值;
ReadOnly是动态常量:是指在运行时获得的,编译器在编译期间标识为只读常量,而不用常量的值代替;
区别:
Const修饰的常量在声明的时候必须初始化,ReadOnly则可以延迟到构造函数初始化;
Const常量既可以声明在类中还可以在函数体内,ReadOnly只能在类中;
Const修饰的常量在编译期间就被解析,ReadOnly修饰的常量则延迟到运行的时候才被解析
2.GC是什么?
GC是垃圾回收机制,GC会自动处理托管内存资源,进行回收释放,而非托管资源则不能使用GC进行回收,必须手动回收。
3.==、Equals、ReferenceEquals 是什么?
==:静态相等符号,它是一个可以重载的二元操作符,可以用于比较两个对象是否相等。对于值类型,判断的是两个对象的代数值是否相等(有隐式类型转换);对于引用类型,判断的是引用类型的引用是否相等,string字符串特殊。
Equals:Equals属于Object的实例方法,用于比较两个对象的引用是否相等,值类型,类型相同(不会进行类型自动转换),并且数值相同(对于struct的每个成员都必须相同),则Equals返回 true,否则返回false,
对于引用类型,判断的是引用类型的引用是否相等
ReferenceEquals :Object的静态方法,对于值类型和引用类型来说,都是比较两个对象的引用是否是否相等。对于值类型来说,返回false,对于引用来说,判断引用类型的引用是否相等
4.抽象类与接口的区别?
抽象类:包含一个或多个抽象方法的类,声明时必须加abstract关键字,子类继承父类时,可用override关键字覆盖父类中的抽象方法
接口:是指类与类之间的一种协定、约束,继承接口中的类必须实现接口中的方法
相同点:都可被继承,都不能实例化,都可包含方法的声明
不同点:抽象类可以实现类成员,接口只能声明不能实现;
抽象类包含字段,接口没有字段但有属性;
抽象类的成员可以使用公开或其他修饰符,接口不需要修饰;
抽象类不支持多重继承,只能继承一个类,但可以实现多个接口,接口支持多重继承
5.类与接口的异同?
不同点:
类能实例化,接口不能实例化。
接口不包含方法的实现。
类只能单继承,接口可以多继承。
接口中不能包含常量、字段、构造函数、析构函数、静态成员。
相同点:
接口、类都可以从多个接口继承。
接口和类都可以包含事件、索引器、属性。
6.虚拟virtual、抽象abstract
抽象方法是只有方法名称,没有方法体,子类继承父类时必须重写父类抽象方法;
(虚拟)虚函数有方法体,子类可以继承父类,也可以重写,但是子类可以覆盖,也可不覆盖。
相同点:都是为了重写
两者区别:
(1)抽象方法只有方法名称,没有方法体,虚方法有方法体。抽象方法是一种强制派生类覆盖的方法,否则派生类将不能被实例化;
(2)抽象方法只能在抽象类中声明,虚方法不是;
(3)派生类必须重写抽象类中的抽象方法,虚方法则不必要。
7.
三个范式:
第一范式:字段不能有冗余信息,所有字段都是必不可少的。
第二范式:满足第一范式并且表必须有主键。
第三范式:满足第二范式并且表引用其他的表必须通过主键引用。
8.Server.Transfer和Response.Redirect的区别是什么?
地址栏:
1.Server.Transfer在服务器端完成,所以客户端浏览器中的URL地址是不会改变的;
2.Response.Redirect是客户端完成,向服务器端提出新的页面处理请求,所以客户端浏览器中的URL地址是会改变的。
切换对象:
1、Response.Redirect可以切换到任何存在的网页。
2、Server.Transfer只能切换到同目录或者子目录的网页。
数据保密:
1、Response.Redirect后地址会变成跳转后的页面地址。
2、Server.Transfer后地址不变,隐藏了新网页的地址及附带在地址后边的参数值。具有数据保密功能。
传递的数据量(网址后附带的参数):
1、Response.Redirect能够传递的数据以2KB为限。
2、传递的数据超过2KB时,务必使用Server.Transfer。
使用区域:
1、Response.Redirect()可以从一个跨服务器跨站点跳转。
2.Server.Transfer()只能从在同一服务器端的同一站点间运行,
建立通讯:
1.Response.Redirect()需要客户端(浏览器)与服务端进行两次通信。
2.Server.Transfer()跳转只需要客户端和服务端一次通讯,跳转在服务端实现,减轻服务器的压力
9.单例模式的作用?
好处:①封装了唯一性,可严格控制客户怎样访问以及何时访问;
? ②内存中只有一个对象,可节约系统资源,提高系统性能;
如何实现:
①将构造函数私有化
②使用一个公开静态类
? ③使用一个静态属性进行判断当前窗口是否被创建
const和ReadOnly、==、Equals、ReferenceEquals、GC
最新推荐文章于 2023-09-27 11:12:23 发布