1. 装箱和拆箱
- 装箱:将值类型(栈)转化为引用类型(堆)。
- 拆箱:将引用类型(堆)转化为任意的值类型(栈)。
2. abstract和interface:
- 抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象中,且不包含任何实现,派生类必须覆盖它们。另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们。
- 接口是引用类型的,类似于类,和抽象类的相似之处有三点:
1)、不能实例化;
2)、包含未实现的方法声明;
3)、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员);
另外,接口有如下特性:
接口除了可以包含方法之外,还可以包含属性、索引器、事件,而且这些成员都被定义为公有的。除此之外,不能包含任何其他的成员,例如:常量、域、构造函数、析构函数、静态成员。一个类可以直接继承多个接口,但只能直接继承一个类(包括抽象类)。 - 抽象类和接口的使用
1)、如果预计要创建组件的多个版本,则创建抽象类。抽象类提供简单的方法来控制组件版本。
2)、如果创建的功能将在大范围的全异对象间使用,则使用接口。如果要设计小而简练的功能块,则使用接口。
3)、如果要设计大的功能单元,则使用抽象类.如果要在组件的所有实现间提供通用的已实现功能,则使用抽象类。
4)、如果预计要创建组件的多个版本,则创建抽象类。抽象类提供简单的方法来控制。 - 理解示例
铁门木门都是门(抽象类),你想要个门我给不了(不能实例化),但我可以给你个具体的铁门或木门(多态);而且只能是门,你不能说它是窗(单继承);一个门可以有锁(接口)也可以有门铃(多实现)。 门(抽象类)定义了你是什么,接口(锁)规定了你能做什么(一个接口最好只能做一件事,你不能要求锁也能发出声音吧(接口污染))。
3. .NET各版本的区别
- .NET2.0 = Common Language Runtime(CLR) + Base Class Library(BCL) + C#/VB.NET + WinForm + WebForm;
- .NET3.0 = .NET2.0 + Windows Communication Foundation(WCF) + Windows Presentation Foundation(WPF) + Windows Workflow Foundation(WF) + Windows Workflow Foundation(WCS)
- .NET3.5 = .NET3.0 + ASP.NET AJAX + Silverlight + LINQ
- .NET4.0 = .NET3.5 + Dynamic Language Runtime(DLR) + 选参数和命名参数 + 协变和抗变 + ASP.NET MVC
- .NET4.5 = .NET4.0 + 支持新的 HTML5 窗体类型 + Web 窗体中支持model binders模型绑定器 + 独立文件的JavaScript验证 + 打包压缩和精简脚本来改进的页性能 + 集成 AntiXSS 库,防止XSS跨站脚本攻击 + 支持WebSockets 协议 + 支持异步读取和写入 HTTP 请求和响应 + 支持异步模块和处理程序 + ScriptManager 控件支持 (CDN)内容分布式网络回退
4. 委托和事件
- 委托:委托是一种特殊的对象类型,它定义了方法的类型,使得可以将方法当做另一个方法的参数来进行传递,其特殊之处在于,我们以前定义的所有对象都包含数据,而委托包含的只是方法的地址。这种将方法动态地赋给参数的做法,可以避免在程序中大量使用分支语句,同时使得程序具有更好的扩展性。
- 事件:事件编程简单地分成两个部分:事件发生器和事件接收处理器。事件发生器就是说在这个类中触发了一个事件,但这个类并不知道哪个对象或方法将会收到并处理它触发的事件。所需要的是在发送方和接收方之间存在一个媒介。这个媒介在.NET Framework中就是委托(delegate)。在事件接收处理器中,我们需要有一个处理事件的方法。
- http://www.cnblogs.com/jimmyzhang/archive/2007/09/23/903360.html
5. NET页面传值的几种方式:
- QueryString
Request.QueryString 是用来接收Url里面(Get),后面的paraName=value的内容。
Request.Form 是用来接收表单action 提交通过HTTP post处理发送的数据。
两种提交方式可以统一用Request("paraname")来获取提交数据,但是这样对程序效率有影响。 - Server.transfer
- Session
- Cookie
- Context.Items,Context.Handler
- Application
6. 反射
.NET的应用程序由程序集、模块、类型三部分组成,而反射提供一种编程方式,让程序可以在运行期获得这三部分的相关信息。
7. Page页面的生命周期
- 对象初始化(OnInit);
- 加载视图状态数据(LoadViewState);
- 处理回传数据(LoadPostData);
- 对象加载(Load -> OnLoad);
- 激发RaisePostDataChanged事件;
- 处理客户端回传事件(RaisePostBackEvent);
- 对象预呈现(OnPreRender);
- 保存视图状态(SaveViewState);
- 呈现(HTML Render);
- 释放(Dispose)。
8. OOP编程三大特点
- 封装
- 继承
- 多态:多态的两种表现形式:方法重载和方法重写。
9. 方法重载与方法重写
- 方法重载:在同一个类中的方法,返回类型相同,方法名相同,方法签名不同。
- 方法重写:在基类与子类中,基类方法是:virtual、abstract 时,方可在子类中用override重写基类方法。
10. 在c#中,给函数传递参数类型不同,其中基本类型和struct类型是值传递,而Class类型是引用传递,也就是当在函数中改变了基本类型和Struct类型中的值,返回后函数变量相应的值是 不同,而Class类型在返回之后,其中的变量发生了变化。
11. WinForm中Component Class、User Control及Custom Control的区别和使用
Component Class: 从现有的 Windows 窗体控件继承产生新的控件。得以保留 Windows 窗体控件所有固有功能,然后通过添加自定义属性、方法或其他功能扩展此固有功能。
大多数所需的功能已经与现有的 Windows 窗体控件相同时,一般使用Component Class。
User Control:用户控件是封装在公共容器内的 Windows 窗体控件的集合。此容器包含与每个 Windows 窗体控件相关联的所有固有功能,允许您有选择地公开和绑定它们的属性。用户 控件的例子之一可能是已生成的显示数据库中客户地址数据的控件。将若干个 Windows 窗体控件的功能合成一个可重新使用的单元时,可使用User COntrol。
Custom Control:Custom Control是通过从 Control 继承来完全从头地创建一个控件。Control 类提供控件(例如事件)所需的所有基本功能,但不提供控件特定的功能或图形接口。 与通过从用户控件或现有 Windows 窗体控件继承来创建控件相比,通过从 Control 类继承来创建控件需要耗费的心思和精力要多得多。当想要提供控件的自定义图形化表示形式或需要实 现无法从标准控件获得的自定义功能时,可以使用Custom Control。