1. 什么是类? 什么是结构体? 二者有什么区别? 相同点是什么? 你经常使用类还是结构体?为什么? 类:同一类对象共同属性和行为的抽象用户自定义的 结构体:同一类共同属性和行为的抽象 二者区别:类:引用类型 结构体:值类型 二者相同点:对共同属性和行为的抽象 2..怎样理解静态变量和静态方法? 静态构造函数的作用是什么? 静态变量:属于类,不属于对象 静态方法:不用创建类的实例,直接使用类的方法,方法变量在栈上, 静态构造函数的作用:初始化类的静态数据成员,在代码加载时执行; 程序中无法调用静态构造函数,此前的任何修饰符都是无效的; 静态构造函数,没有参数 3.值类型与引用类型有什么区别? 值类型:数据存储在栈上,直接存储数据本身 引用类型:数据存储在堆上,在栈上引用其地址 二者区别: l 所有内置对象,除了object和string 以外,都是值类型,所有用户定义类型,除了结构体都是引用类型; 4.override 与重载有什么区别? Override:覆盖:在继承关系中,父类中的虚方法,在子类中需要重写时 Overload:重载:同一个类中,函数名相同,参数列表不同,实现不同功能 5.你在什么情况下会用到虚方法?它与接口有什么不同? 子类要重写父类中的方法时,父类中方法应声明为虚方法; 接口:只有方法声明,没有方法体,可以有属性和索引器(都是方法),有概念上的共同特征,要用接口实现,没有方法体 虚方法:不但有方法声明,还要有方法体 6.什么是抽象方法? 什么是抽象类? 抽象方法:只有方法签名,没有方法体 抽象类:类前加关键字abstract,则为抽象类,抽象类不能创建对象 一个类中,如果有抽象方法,则该类一定位抽象类;但是抽象类中不一定有抽象方法 7. 怎样理解类、抽象类、和接口之间的异同? 抽象程度不同: 接口:最高程度抽象,忽略对象,只考察行为概念,不考虑行为的具体实现 类:对对象属性和行为的抽象,以及重点考察方法的具体实现过程 抽象类:二者中间:行为一样,实现不同 8..c#是一种纯粹面向对象的语言。面向对象语言具有什么特点? 抽象,封装 (结果是类),继承,多态 9.类和类之间有哪些关系? 继承,多态,聚合,组合,关联 10.@的作用是什么? 是转义字符失效,用在常量字符串前 表示常量字符串没有需要转义的字符 11.什么是序列化? 为什么要序列化?(什么时候必须作序列化?)如何实现序列化? 序列化:把对象数据成员转化为字节流,只序列化数据成员,不序列化方法 为了把对象保存到存储介质或者在网络上传输,做序列化! 默认的序列化方法:类的定义前加属性:Serializable,编译器会将序列化方法添加到类中 自定义序列化方法:接口:ISerilizable(GetOjbectData方法),还需要加上属性 凡序列化:BinaryFormatter ,SoapFormatter 12.阐述C#中的访问修饰符。类和类的成员的访问修饰符分别有哪些?权限是什么? 类中的Public:任何地方都可用,Internal:当前程序集中可用 类成员的 Public: Protected:本身和子类 Private:
13.什么是操作符重载?为什么要操作符重载?如何实现操作符重载? 操作符重载:在不改变操作符固有的含义情况下,重新定义操作符,目的:扩大操作符的作用范围,必须公有,静态,放在一个类中 Public Static 返回类型 operator ——(参数列表),该操作符,作用在该类上 Class A { Public Static 返回类型 operator ——(A a,。。。)//必须出现一个 } 14.C#中有指针吗? 十三种基本数据类型有指针,其他数据类型没有指针,在非安全模式下用 15..c#中的委托是什么?事件是不是一种委托?委托的作用是什么? 委托:是一种特殊的类:不用Class而用Delegate定义, 目的:封装一个方法的名称 作用:取代C++中的函数指针,把方法封装在委托对象中 定义委托对象,达到传递方法的目的 事件时委托定义的一个变量,事件只能作为类的数据成员出现,不能再方法体中出现 16.什么是应用程序域? 将进程的进一步划分为多个应用程序域,每个应用程序域运行一个应用程序。应用程序域之间相互隔离,互不影响。是一种轻量级的进程(19) 17.怎样理解托管代码? 运行在。NET平台上的代码,运行在CLR(Commom Language Runtime)公共语言运行库上的代码,都是托管代码 18.怎样理解强类型系统? 强类型系统:声明变量时,就指定其存放的数据类型,如C#;JavaScript是弱类型系统 19.解释装箱和拆箱 装箱:值类型到Ojbect类型,或者该值类型所实现的任何接口类型之间的转换。 对值类型装箱,会在堆上分配一个实例对象,并将该值复制到新的对象中。 值类型的数据转换成一个引用类型的数据 20.const 和readonly 的区别是什么? ref、out、和 params的作用和区别是什么? Const:定义常量,只能在定义时,初始化;可以是类变量也可以是局部变量,如果是类变量是静态的 Readonly:只读变量,可以在定义时初始化,也可以在构造函数里初始化,只能是类变量 Ref:强制引用传递,阻止形参对实参的临时拷贝,实参和形参指向同一存储区域, 实参必须初始化才能用,形参必须初始化 Out:实参不用初始化,形参不用 Params:修饰传递可变参数的数组, 21.这些符号的含意是什么: &、 &&、 | 、||、 !、 ^、~。 &:按位与, &&:逻辑与,操作数为逻辑表达式,; 短路现象:a1=T,a2=F,(a1=null计算A1&&a2汇报错) a1&&a2 ,a2&&a1, a1||a2,a2||a1, 1.结果一样2。效率不一样。 |: ||: !:逻辑非 ~:按位取反 ^:按位异或 同0异1
22.CTS、CLS、CLR是什么?图示 VB.Net、 C#.net、 CTS、CLS、CLR 之间的关系?
CTS: Common Type System 公共类型系统 CLS:Common Language Specification公共语言规范 CLR: Common Language Runtime 公共语言运行时 跨语言开发:CTS ;C#.NET,C++,VB等语言遵循CLS,---àCTS---àCLR
|