1.属性和public字段有什么区别?调用Set方法为一个属性设值,然后用get读取出来的值一定是set设置的吗?
属性可以对设值,取值的过程进行非法值控制,一般get读取的值,就是Set设置的值,但是可以让get读取的值,不是set设置的 值。
2.CTS、CLS、CLR分别做和解释,把英文全称背过来。
CTS:(common type system)通用类型系统。每种语言都定义了自己的类型,.Net通过CTS提供了公共类型,然后翻译成对 于.Net类型。
CLS:(common Language Specification )通用语言规范。不同语言语法不同。每种语言都有自己的语法,.Net通过CLS提供 了公共语法,然后不同语言翻译成.Net语法。
CLR:(common Language Runtime)公共语言运行库,相对于一个发动机,执行IL。
3.在dotnet中类(class)与结构(struct)的异同?
class:可以被实例化,属于引用类型,是分配在内存的堆上,类是引用传递的。
Struct:属于值类型,是分配在内存的栈上,结构体是复制传递的, Int32、Boolean等都属于结构体。
4.C#中接口和类有什么异同?
相同点:
类、接口、结构都可以从多个接口继承。
接口类似抽象基类,继承接口的任何非抽象类型都必须实现接口的所有成员。
接口和类都可以包含事件、索引器、方法和属性。
不同点:
接口不能直接实例化,接口不包含方法的实现。
接口可以多继承,类只能单继承。
类的定义可在不同的源文件之间拆分。
5.abstract class 和 interface有什么区别?
相同点:
都不能直接被实例化,可以通过继承实现其抽象方法。
不同点:
接口支持多继承,抽象类不能实现多继承。
接口只能定义行为,抽象类既可以定义行为,还可以提供方法实现。
接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含方法的实现。
抽象类可以定义字段、属性、包含有实现方法。
接口可以用于值类型和引用类型。抽象类只能用于引用类型。
6.C#中using有什么作用?
using可以声明namespace 的引入,还可以实现非托管资源释放,using结束会自动调用该对象的Dispose方法,释放资源。
using其实等价于try... finally,用起来更加方便。