c#基础,面试前迅速巩固c#最基础知识点

n年前为了面试,搜罗的C#基础知识,记在了文档里。今天写到博客园里,与人分享,因为不是专家,所以仅供参考。

1.面向对象

  在面向对象概念提出之前,语言都是面向过程的,说到面向对象,应该与面向过程比较,这样理解会更清晰。顾名思义,面向过程强调的是过程,面向对象强调的是对象。

  下面通过“关门”这个例子,说明两者的的区别,以便帮助理解面向对象的概念。

  面向过程做这一件的思路是:去把门关上。

  小明是个乖巧听话的学生,他轻轻的把门关上;小强比较好动,他一脚把门踹上了。因为面向过程强调的是过程,那么不同的人去做这件事,方式可能会不一样,如果有100个

人,可能有100中方法,在实际项目开发中,我们解决一个问题,我们要为100个人定制100个方法,这是不能想象的。

  面向对象就很好的解决了此问题,面向对象思路:门被关了

  我们把“门被关了”看做是一对象,不管是小明还是小强,或者小红,他们只要找到这个对象就完成了任务,这样1000人过来,用的都是一个对象,屏蔽了人的差异性,实现了代码的通用性。

  面向对象的三大特性:封装,继承,多态

2.构造函数(方法)

  作用:初始化对象(给对象的每个属性一次赋值),是一种特殊的方法

  1)构造函数没有返回值,连void也不能写

  2)构造函数名必须和类名一样

  3)创建对象时会执行构造函数

  4)构造函数可以有重载

  5)类中会有一个默认的无参数构造函数,当你写了一个新的构造函数(有或无参数),默认的无参数构造函数就没有了。

3.析构函数(方法)

  样式:~类名(){ },程序结束时才执行,帮助释放资源。

4.值类型和引用类型

  1)值类型:基本数据类型(int,bool,char,decimal等),结构,枚举

    引用类型:string,类,数组,接口,委托,集合

  2)值类型传递方式为值传递,传递的是值本身,引用类型的传递方式为引用传递,传递的是这个对象的引用

  3)值类型一般存储在内存的栈中(根据申明的位置决定,可能会在堆中),引用类型总是存储在内存的堆中

  4)装箱就是将值类型转换为引用类型,拆箱就是将引用类型转换为值类型。

5.访问修饰符 

  1)public :公开的公共的

  2)private:私有的,只能在当前类的内部访问

  3)protected:受保护的,只能在当前类的内部以及该类的子类中访问。

  4)internal:只能在当前项目中访问。在同一个项目中,internal和public的权限是一样。

6.继承

  1)子类继承了父类的属性和方法,但是子类并没有继承父类的私有成员

  2)子类并没有继承父类的构造函数,但是,子类会默认的调用父类无参数的构造函数,创建父类对象,让子类可以使用父类中的成员。所以,如果在父类中重新写了一个有参数的构造函数之后,那个无参数的就没有了,子类就调用不到了,子类就会报错。

  3)c#是单继承,一个类只能继承一个父类,object是所有类的基类。

7.静态类和非静态类

  内存中一般有三块存储区域,栈,堆和静态存储区域,静态对象就存储在静态存储区域中

  1)在非静态类中,既可以有非静态成员,也可以有静态成员;静态类中只允许有静态成员

  2)类中的静态成员属于类,不属于对象

  3)静态类不能被实例化

  4)在调用非静态成员的时候,需要使用对象名.非静态成员;在调用静态成员的时候,需要使  用类名.静态成员名

  5)如果你想要你的类当做一个"工具类"去使用,这个时候可以考虑将类写成静态的,静态类在整个项目中资源共享。

8.多态

  1)实现多态的三种手段:虚方法,抽象类,接口。

  2)如果父类中的方法有默认的实现,并且父类需要被实例化,这时可以考虑将父类定义成一个普通类,用虚方法来实现多态;如果父类中的方法没有默认实现,父类也不需要被实例化,则可以将该类定义为抽象类。

9.抽象类

  1)抽象成员必须标记为abstract,并且抽象方法不能有任何实现。

  2)抽象成员必须在抽象类中。

  3)抽象类不能被实例化

  4)子类继承抽象类后,必须把父类中的所有抽象方法都重写

  5)抽象成员的访问修饰符不能是private

  6)在抽象类中可以包含实例成员,并且抽象类的实例成员可以不被子类实现

  7)抽象类是有构造函数的。虽然不能被实例化

  8)如果父类的抽象方法中有参数,那么。继承这个抽象父类的子类在重写父类的方法的时候必须传入对应的参数;如果抽象父类的抽象方法中有返回值,那么子类在重写这个抽象方法的时候 也必须要传入返回值

10.接口

  1)接口不能被实例化

  2)只要一个类继承了一个接口,这个类就必须实现这个接口中所有的方法

  3)接口中的成员不能加“访问修饰符”,默认为public,不能修改,接口中的方法不能有任何实现

  4)接口中只能有方法、属性、索引器、事件,不能有“字段”和构造函数

  5)接口与接口之间可以继承,并且可以多继承,接口并不能去继承一个类,而类可以继承接口

  6)一个类可以同时继承一个类并实现多个接口,如果一个子类同时继承了父类A,并实现了接口IA,那么语法上A必须写在IA的前面

  7)当一个抽象类实现接口的时候,需要子类去实现接口

注:以上只是点仅供参考,有错误处,敬请谅解!如果指出错误处,立即更改!

时间: 2024-07-30 14:35:26

c#基础,面试前迅速巩固c#最基础知识点的相关文章

ASP.NET工程师面试前需要认真准备的几大知识点。

凭借个人进几年的工作经验和面试经验以及个人认为比较重要的进行如下总结,希望对自己以后和对大家有所帮助.过于基础的问题就省略了. 1.C#语言的基础知识(网上有这发面的面试题对基础知识的涵盖面很全,面试钱一定要好好的做一下) 2.算法:冒泡排序.快速排序.快速排序的几大优化等.(一定要掌握几个不一定所有算法都要懂.一般面试官会出考题,问用什么样的算法处理,你就用你自己了解的算法来处理即可) 3.必须理解掌握的几个大概念如下 a) http协议的原理.Get和Post 的异同点(老生常谈的,不懂就没

JAVA多线程和并发基础面试问答【转】

JAVA多线程和并发基础面试问答 多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一.在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题.(校对注:非常赞同这个观点) Java多线程面试问题 1. 进程和线程之间有什么不同? 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用.而线程是在进程中执行的一个任务.Java运行环境是一个包含了不同的类和程序的单 一进程.线程可以被称为轻量

Java基础面试:集合、内部类、线程

package test; import java.util.Hashtable; import java.util.Map; public class test { public static String change(String param){ param=null; return param; } public static void main(String[] args) { String param1="p1"; param1=change(param1); Map ta

17、JAVA多线程和并发基础面试问答

JAVA多线程和并发基础面试问答 原文链接:http://ifeve.com/java-multi-threading-concurrency-interview-questions-with-answers/ 多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一.在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题.(校对注:非常赞同这个观点) Java多线程面试问题 1. 进程和线程之间有什么不同? 一个进程是一个独立(se

web前端工程师(实习生)面试前中后

金三银四是对应聘工作的要把握时间的一种描述. 面试前 我是从去年下半年才开始接触web前端知识的,刚开始学习前端知识的时候,虽说是在学院的一个工作室进行学习的,但是因为交流少等原因,导致自己一开始走了一些弯路.感觉直到今年的开学之际,意识到自己要找实习了,翻看网上的一些面经等,才发现自己知道的实在太少了,甚至可以说对前端一无所知.这么说吧,虽然我也看了<javascript高级程序设计>,<锋利的jquery>,<javascript Dom编程艺术>等,但是学了几个月

[转] JAVA多线程和并发基础面试问答

JAVA多线程和并发基础面试问答 原文链接:http://ifeve.com/java-multi-threading-concurrency-interview-questions-with-answers/ 多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一.在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题.(校对注:非常赞同这个观点) Java多线程面试问题 1. 进程和线程之间有什么不同? 一个进程是一个独立(se

Java---常用基础面试知识点

综合网上的一点资源,给大家整理了一些Java常用的基础面试知识点,希望能帮助到刚开始学习或正在学习的学员. 1.抽象 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二是数据抽象. 2.继承 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法. 对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继 承了原始类的特性,新

慕课网-前端JavaScrpt基础面试技巧-学习笔记

章节目录: JS基础知识(上)--讲解 JS 基础语法相关的面试题,分析原理以及解答方法.这一章节讲解了基础知识的第一部分:变量的类型和计算.以及JS "三座大山" -- 原型.作用域和异步中的第一座大山:原型. JS基础知识(中)--讲解 JS 基础语法相关的面试题,分析原理以及解答方法.这一章节讲解了JS "三座大山" -- 原型.作用域. JS基础知识(下)--讲解 JS 基础语法相关的面试题,分析原理以及解答方法.这一章节讲解了基础知识的第三部分:JS &q

PYTHON 一些基础面试题目总结

PYTHON 一些基础面试题目总结http://www.bieryun.com/1191.html 1.       Python是如何进行内存管理的? 答:从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制 一.对象的引用计数机制 python内部使用引用计数,来保持追踪内存中的对象,所有对象都有引用计数. 引用计数增加的情况: 1,一个对象分配一个新名称 2,将其放入一个容器中(如列表.元组或字典) 引用计数减少的情况: 1,使用del语句对对象别名显示的销毁 2,引用超出作