C#基础知识

摘要:
C#基础1、面向对象、面向接口、面向方向编程的区别:面向对象:强调对具有相同行为和属性事物的封装,更注重封装的完整性和功能的完整性面向接口:定义要实现某类功能要实现的统一规范,而具体实现过程由实现该接口的类型决定面向方面:主要提供与业务逻辑无关的操作。对象一致指的是引用相同。在类声明中使用abstract修饰符以指示某个类只能是其他类的基类。
C#基础

1、面向对象、面向接口、面向方向编程的区别:

面向对象:强调对具有相同行为和属性事物的封装,更注重封装的完整性和功能的完整性

面向接口:定义要实现某类功能要实现的统一规范,而具体实现过程由实现该接口的类型决定

面向方面:主要提供与业务逻辑无关的操作。比如系统中多个地方要使用到的文件上传功能,可以使用面向方向的思想在所有上传文件之前对文件的大小、格式等信息进行过滤操作,而不是在每处上传代码里面完成对这些信息的过滤。

2、接口和类的区别

接口:不能实例化,自己没有状态,方法也没有具体的实现,被继承时,继承类必须实现接口的所有方法。接口就像租房时网上下载的一个租房合同模板。

类:可以被实例化,有状态,被继承时,继承类也不需要重新实现被继承类中的方法。但是如果被继承类的方法中有abstract修饰的,继承类则需要实现这个方法。类像是已经被填上内容的租房合同模板。

3、抽象基类和接口的对比

接口是用来定义行为规范的,不会有具体实现,而抽象类除定义行为规范外,可以有部分实现,但一个类能实现多个接口,但只能继承一个基类。接口是一种契约,定义了继承它的类必须声明接口中的方法。

区别:接口只有方法、属性、事件和索引符;类除了这四种成员之外还可以有别的成员(如字段)。接口没有构造函数,类有构造函数。

接口不能进行运算符的重载,类可以进行运算符重载。

接口成员没有任何修饰符,其成员都是公共的,而类的成员则可以有修饰符。派生于接口的类必须实现接口中所有的方法成员,而从类派生则不然。

4、a.Equals(b)与a == b的区别?

equals:比较两个变量的内容是否相等

==:比较两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。

5、在对象比较中,对象一致和对象相等分别是指什么?

对象一致指的是引用相同。对象相等指的是内容相等。

6、什么是拆箱操作和装箱操作?

拆箱操作就是引用类型转变为值类型,通常伴随着从堆中复制对象实例的操作

装箱操作就是值类型数据转换为Object类型的引用对象

7、string类型是值类型还是引用类型

引用类型

8、DateTime类型的对象值可以为null么?

不可以,DateTime是struct,是值类型,只有引用类型可以赋值为null

9、关键词new的含义?有何副作用?

new在基类没有virtual关键字修饰的情况下必须使用,副作用是破坏了继承关系

10、virtual、sealed、override和abstract关键字

virtual:virtual关键字用于修饰方法、属性、索引器或事件声明,并使它们可以再派生类中被重写。例如,此方法可以被任何继承它的类重写

sealed:当对一个类或者方法,此修饰符会阻止其他类从该类继承或者方法无法被继承。

abstract:abstract修饰可以和类、方法、属性、索引器及事件一起使用。在类声明中使用abstract修饰符以指示某个类只能是其他类的基类。标记为抽象或者包含在抽象类中的成员必须通过从抽象类派生的类来实现。

11、public、protected、private、internal之间的区别

public:对任何类和成员都公开,无限制访问。

protected:仅仅对该类以及该类的派生类公开。

private:仅仅对该类公开。

internal:只能在包含该类的程序集中访问该类(只是单独的项目,而不是整个解决方案)。

12、this是什么?可以再静态方法中使用this么?

this用于调用当前实例,无法再static方法中调用this。

13、ref修饰参数和out修饰参数的区别

ref、out都可以从函数内部传出值,区别是,ref修饰的参数必须先初始化、而out不用,这样的区别是有原因的,ref传入的值是可以使用的,而out传入的值总被编译器认为是没有初始化的,也就是无用的值。

14、什么是多态

封装、继承、多态是面向对象的基础,面试中,往往会被问到这些问题来考察你对面向对象的理解程度,我们可能都心里明白什么是多态,但是用语言表达出来就不是那么随意了,到底什么是多态呢?

维基百科给出这样的回答:多态,是指面向对象程序运行时,相同的信息可能会送给多个不同类型的对象,而系统可依据对象所属类型,引发对应类型的方法,而有不同的行为。简单来说,所谓多态意指相同的信息给予不同的对象会引发不同的动作。在面向对象程序设计中,多态一般指子类型多态。

举个简单的例子就是:有动物(Animal)之类型(Class),而且由动物继承出类型鸡(Chicken)和类型狗(Dog),并对同一源自类型动物(父类型)之一信息有不同的响应,如类型动物有“叫()”之动作,而类型鸡会“啼叫()”,类型狗则会“吠叫()”,则称之为多态。

15、什么面向对象

我的理解是,面向对象就是将一切事物都看成对象,而程序就是由这些对象组成的,我们在对面向对象编程时,只要知道每个积木块的作用就行了,不用考虑积木块的内部结构,我认为这就是面向对象。它与面向过程的区别是,我们在面向过程的编程中需要告诉程序怎么做,而在面向对象的编程中只要告诉那些类做什么就可以了,至于怎么做,是类内部的操作,我们不需要关心。

免责声明:文章转载自《C#基础知识》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇数据库操作封装类 DBHelper.csandroid中实现本地广播下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

全面解读:微信服务号升级和群发增至4条的应用方法

全面解读:微信服务号升级和群发增至4条的应用方法 摘要:微信公众平台正式公布微信服务号升级的消息,提供高级群发接口,火速华磊初步总结:群发接口的提供意味着企业获得了精准推送的能力、企业获得了每月多次激活粉丝的能力、企业公众号的粉丝活跃度全面提升、公众号的营销核心过程趋于完美。 2014/4/15 21:58分,微信公众平台正式公布微信服务号升级的消息,消...

linux安装命令行 图形查看 CPU温度 传感器-20191218

方法1:命令行sensors # sensorsi350bb-pci-0700Adapter: PCI adapterloc1: +46.0°C (high = +120.0°C, crit = +110.0°C) cpu-hwmon-virtual-0Adapter: Virtual deviceCPU 0 Temprature: +35.0°CCPU...

java中abstract的用法

abstract(抽象)修饰符,可以修饰类和方法1,abstract修饰类,会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型,也就是编译时类型,抽象类就像当于一类的半成品,需要子类继承并覆盖其中的抽象方法。2,abstract修饰方法,会使这个方法变成抽象方法,也就是只有声明(定义)而没有实现,实现部分以";"代替。需要子类...

【UML】工具Astah学习记录(一)类图

Astah社区免费版工具下载地址: 链接:https://pan.baidu.com/s/1jIIjtqQ 密码:c9d4 1.安装工具,默认安装即可,略。 2.进入工具: 3.创建文件(File->new): 4.右键创建类图: 进入到如下界面: 5.创建一个类: 6.如下,创建一个Person类,点击橙色的菱形可以创建属性,点击绿色的长...

在微信小程序中调用本地接口

1.点击详情,并勾选项目设置中最后一行。 2.用小程序请求本地的后台服务接口 wx.request({ url: 'http://localhost:8090/DemoProject/myTest.do', data:{}, method:'POST', header: {...

Vue-cli 创建的项目配置跨域请求(通过反向代理)---配置多个代理--axios请求

问题描述: 使用 Vue-cli 创建的项目,开发地址是 localhost:8080,需要访问 localhost:9000或https://m.maoyan.com或http://image.baidu.com上的接口 分析原因: 不同域名之间的访问,需要跨域才能正确请求。跨域的方法很多,通常都需要后台配置 不过 Vue-cli 创建的项目,可以直接...