C#概念基础

1.面向对象的三大特点

封装、继承、多态

1.封装

封装是将数据和行为相结合,通过行为约束代码修改数据的程度,增强数据的安全性,属性是C#封装的最好表现。

(将实现细节,通过接口形式暴漏给第三方,而第三方者不需要关心实现细节。)

(virtual) 代表虚函数,意味着子类可以覆盖其实现,如果子类不覆盖那将是用父类的同名函数。

2.继承

提高代码重用度,增强软件可维护性的重要手段,符合开闭原则。

(就是将共用的属性或方法抽离到父类的过程。)

(protected)只能子类调用,外界类不能访问。

3.多态

多态是指同名的方法在不同环境下,自适应的反应出不同得表现,是方法动态展示的重要手段。

(通过继承实现不同方法的方法,表现出不同的行为,称之为多态。)

 2.值类型和引用类型的区别

区别:

1.值类型存储在内存中,引用类型谁存储在内存中,而内存单元中存放的是堆中存放的地址

2.值类型存取引用类型存取

3.值类型表示实际数据引用类型表示指向存储在内存堆中的数据的指针和引用

4.的内存是自动释放的,内存是.NET中会由GC来自动释放

5.值类型继承自System.ValueType引用类型继承自System.Object

4.private,public,protected,internal的区别

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

private:仅对该类公开

protected:对该类和其派生类公开

internal:只能在包含该类的程序集中访问该类

5. C#中所有引用类型的基类是什么

引用类型的基类是 System.Object ,值类型的基类是 System.ValueType

同时,值类型也隐式继承自 System.Object

6. ArrayList 和 List<T>的主要区别

ArrayList:不带泛型 数据类型丢失

List<T>:带泛型 数据类型不丢失

ArrayList:需要装箱拆箱 List<T>不需要

 7.装箱和拆箱

装箱是将值类型转换成引用类型。
拆箱是将引用类型转换成值类型,只有装箱过的对象才能拆箱。

举个例子一个方法需要传参

函数(Object)

传入的参数如果是值类型就是装箱(把int(值类型)转成Object的过程)

再定义一个值类型接收就是拆箱(定义一个(int a=(int)Obj))

调用含有object类型的方法的时候,传入值类型的时候就会发生装箱,方法之中处理该参数的时候会发生拆箱。
定义泛型的时候,如果为了通用定义object类型,当添加值类型的时候就会发生装箱和拆箱。

8.抽象类 

一个包含一个或多个纯虚函数的类叫抽象类,它们只提供部分实现,但是另一个类可以继承它并且能创建它们的实例。一个抽象类只能通过接口和作为其它类的基类使用,抽象类不能直接被实例化。

关键字:abstract

1、一个抽象类可以同时包含抽象方法和非抽象方法。
2、抽象方法只在派生类中真正实现,这表明抽象方法只存放函数原型,不涉及主体代码,
3、派生自抽象类的类需要实现其基类的抽象方法,才能实例化对象。
4、使用override关键子可在派生类中实现抽象方法,经override声明重写的方法称为重写基类方法,其签名必须与override方法的签名相同。

 9.接口

接口是指定一组函数成员,而不实现他们的引用类型。可由方法、属性、事件、索引器或这四种成员类型的任意组合构成。

关键字:interface

1、接口类似于抽象基类,不能直接实例化接口;接口中的方法都是抽象方法,实现接口的任何非抽象类型都必须实现接口的所有成员。

2、接口不能包含常量、字段、运算符、实例构造函数、析构函数或类型、不能包含静态成员。

3、接口成员是自动公开的,且不能包含任何访问修饰符。 

4、接口自身可从多个接口继承,类和结构可继承多个接口,但接口不能继承类。

5、当一个类既继承基类,又继承接口的时候,必须基类写在前面,基类和接口用逗号隔开,一个类只能有一个基类,可以继承许多接口

10.Interface与抽象类之前的不同

1.接口不是类,不能实例化,抽象类可以间接实例化。

2.接口是完全抽象 抽象类为部分抽象。

3.接口可以多继承,抽象类是单继承。

11.ref和out

参考:https://www.cnblogs.com/gsk99/archive/2010/12/13/1904557.html

传递到 ref 参数的参数必须最先初始化。这与 out 不同,后者的参数在传递之前不需要显式初始化

尽管作为 out 参数传递的变量不必在传递之前进行初始化,但需要调用方法以便在方法返回之前赋值。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值