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)当一个抽象类实现接口的时候,需要子类去实现接口
注:以上只是点仅供参考,有错误处,敬请谅解!如果指出错误处,立即更改!
c#基础,面试前迅速巩固c#最基础知识点的更多相关文章
- JAVA多线程和并发基础面试问答(转载)
JAVA多线程和并发基础面试问答 原文链接:http://ifeve.com/java-multi-threading-concurrency-interview-questions-with-ans ...
- [转] JAVA多线程和并发基础面试问答
JAVA多线程和并发基础面试问答 原文链接:http://ifeve.com/java-multi-threading-concurrency-interview-questions-with-ans ...
- JAVA多线程和并发基础面试问答
转载: JAVA多线程和并发基础面试问答 多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一.在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对 ...
- 【多线程】JAVA多线程和并发基础面试问答(转载)
JAVA多线程和并发基础面试问答 原文链接:http://ifeve.com/java-multi-threading-concurrency-interview-questions-with-ans ...
- Java---常用基础面试知识点
综合网上的一点资源,给大家整理了一些Java常用的基础面试知识点,希望能帮助到刚开始学习或正在学习的学员. 1.抽象 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方 ...
- (转)JAVA多线程和并发基础面试问答
JAVA多线程和并发基础面试问答 原文链接:http://ifeve.com/java-multi-threading-concurrency-interview-questions-with-ans ...
- 慕课网-前端JavaScrpt基础面试技巧-学习笔记
章节目录: JS基础知识(上)--讲解 JS 基础语法相关的面试题,分析原理以及解答方法.这一章节讲解了基础知识的第一部分:变量的类型和计算.以及JS "三座大山" -- 原型.作 ...
- Java面试前需要了解的东西
一.前言 只有光头才能变强 回顾前面: 广州三本找Java实习经历 上一篇写了自己面试的经历和一些在面试的时候遇到的题目(笔试题和面试题). 我在面试前针对Java基础也花了不少的时间,期间也将自己写 ...
- 最近面试java后端开发的感受:如果就以平时项目经验来面试,通过估计很难——再论面试前的准备
在上周,我密集面试了若干位Java后端的候选人,工作经验在3到5年间.我的标准其实不复杂:第一能干活,第二Java基础要好,第三最好熟悉些分布式框架,我相信其它公司招初级开发时,应该也照着这个标准来面 ...
随机推荐
- NOIP200304麦森数
试题描述 形如2P-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2P-1不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的一个是P=3021377,它有9 ...
- C++ unordered_map remove 实现哈希表移除
使用C++的unordered_map类型时,我们经常要根据关键字查找,并移除一组映射,在Java中直接用remove即可,而STL中居然没有实现remove这个函数,还要自己写循环来查找要删除项,然 ...
- Programming with gtkmm 3
https://developer.gnome.org/gtkmm-tutorial/unstable/index.html.zh_CN 1. 序言 1.1. 本书 1.2. gtkmm 2. 安 ...
- 被spring和hibernate4逼疯
spring3.1整合hibernate4,事务都配置上了的,但getCurrentSession()仍然获得不到 以下是各配置 web.xml ? 1 2 3 4 5 6 7 8 9 10 11 1 ...
- Apache Spark源码走读之5 -- DStream处理的容错性分析
欢迎转载,转载请注明出处,徽沪一郎,谢谢. 在流数据的处理过程中,为了保证处理结果的可信度(不能多算,也不能漏算),需要做到对所有的输入数据有且仅有一次处理.在Spark Streaming的处理机制 ...
- PTF 安装及简单测试 Packet Testing Framework
PTF PTF is a Python based dataplane test framework. It is based on unittest, which is included in th ...
- DS实验题 Dijkstra算法
参考:Dijkstra算法 数据结构来到了图论这一章节,网络中的路由算法基本都和图论相关.于是在拿到DS的实验题的时候,决定看下久负盛名的Dijkstra算法. Dijkstra的经典应用是开放最短路 ...
- Redis 笔记与总结6 Redis 高级应用之 事务处理、持久化操作、pub_sub、虚拟内存
3.事务处理 redis 对事务的支持目前还比较简单. redis 只能保证一个 client 发起的事务中的命令可以连续的执行,而中间不会插入其他 client 的命令. 由于 redis 是单线 ...
- 查找文件是否安装以及安装路径(Ubuntu 下 )
参考:<linux下如何查看某个软件 是否安装??? 安装路径在哪???> 原文: 如果你使用rpm -ivh matlab装的, 用rpm -qa | grep matlab肯定是能够找 ...
- Web 在线文件管理器学习笔记与总结(19)上传文件
dir.func.php 中添加方法: /* 上传文件 */ function uploadFile($fileInfo,$path,$allowExt = array('jpg','jpeg','p ...