胸怀天下 脚踏实地  

 

1. 什么是类? 什么是结构体? 二者有什么区别? 相同点是什么? 你经常使用类还是结构体?为什么?

   类:同一类对象共同属性和行为的抽象用户自定义的

   结构体:同一类共同属性和行为的抽象

   二者区别:类:引用类型 结构体:值类型

   二者相同点:对共同属性和行为的抽象

2..怎样理解静态变量和静态方法? 静态构造函数的作用是什么?

   静态变量:属于类,不属于对象

   静态方法:不用创建类的实例,直接使用类的方法,方法变量在栈上,

   静态构造函数的作用:初始化类的静态数据成员,在代码加载时执行;

程序中无法调用静态构造函数,此前的任何修饰符都是无效的;

                        静态构造函数,没有参数

3.值类型与引用类型有什么区别?

   值类型:数据存储在栈上,直接存储数据本身

   引用类型:数据存储在堆上,在栈上引用其地址

   二者区别:

l         所有内置对象,除了objectstring 以外,都是值类型,所有用户定义类型,除了结构体都是引用类型;

             

4.override 与重载有什么区别?

   Override:覆盖:在继承关系中,父类中的虚方法,在子类中需要重写时

   Overload:重载:同一个类中,函数名相同,参数列表不同,实现不同功能

5.你在什么情况下会用到虚方法?它与接口有什么不同?

子类要重写父类中的方法时,父类中方法应声明为虚方法;

接口:只有方法声明,没有方法体,可以有属性和索引器(都是方法),有概念上的共同特征,要用接口实现,没有方法体

虚方法:不但有方法声明,还要有方法体

6.什么是抽象方法? 什么是抽象类?

     抽象方法:只有方法签名,没有方法体

     抽象类:类前加关键字abstract,则为抽象类,抽象类不能创建对象

     一个类中,如果有抽象方法,则该类一定位抽象类;但是抽象类中不一定有抽象方法

7. 怎样理解类、抽象类、和接口之间的异同?

   抽象程度不同:

接口:最高程度抽象,忽略对象,只考察行为概念,不考虑行为的具体实现

类:对对象属性和行为的抽象,以及重点考察方法的具体实现过程

抽象类:二者中间:行为一样,实现不同

8.c#是一种纯粹面向对象的语言。面向对象语言具有什么特点?

    抽象封装 (结果是类),继承,多态

9.类和类之间有哪些关系?

    继承,多态,聚合,组合,关联

10@的作用是什么?

是转义字符失效,用在常量字符串前

表示常量字符串没有需要转义的字符

11.什么是序列化? 为什么要序列化?(什么时候必须作序列化?)如何实现序列化?

序列化:把对象数据成员转化为字节流,只序列化数据成员,不序列化方法

为了把对象保存到存储介质或者在网络上传输,做序列化!

默认的序列化方法:类的定义前加属性:Serializable,编译器会将序列化方法添加到类中

自定义序列化方法:接口:ISerilizableGetOjbectData方法),还需要加上属性

凡序列化:BinaryFormatter SoapFormatter

12.阐述C#中的访问修饰符。类和类的成员的访问修饰符分别有哪些?权限是什么?

类中的Public:任何地方都可用,Internal当前程序集中可用

类成员的

          Public:

          Protected:本身和子类

          Private:

13.什么是操作符重载?为什么要操作符重载?如何实现操作符重载?

操作符重载:在不改变操作符固有的含义情况下,重新定义操作符,目的:扩大操作符的作用范围,必须公有,静态,放在一个类中

Public Static 返回类型 operator ——(参数列表),该操作符,作用在该类上

Class A

{

    Public Static 返回类型 operator ——(A a,。。。)//必须出现一个

}

14C#中有指针吗?

十三种基本数据类型有指针,其他数据类型没有指针,在非安全模式下用

15.c#中的委托是什么?事件是不是一种委托?委托的作用是什么?

委托:是一种特殊的类:不用Class而用Delegate定义,

目的:封装一个方法的名称

作用:取代C++中的函数指针,把方法封装在委托对象中

定义委托对象,达到传递方法的目的

事件时委托定义的一个变量,事件只能作为类的数据成员出现,不能再方法体中出现

16.什么是应用程序域?

   将进程的进一步划分为多个应用程序域,每个应用程序域运行一个应用程序。应用程序域之间相互隔离,互不影响。是一种轻量级的进程(19

17.怎样理解托管代码?

   运行在。NET平台上的代码,运行在CLRCommom Language Runtime)公共语言运行库上的代码,都是托管代码

18.怎样理解强类型系统?

   强类型系统:声明变量时,就指定其存放的数据类型,如C#JavaScript是弱类型系统
   

19.解释装箱和拆箱

  装箱:值类型到Ojbect类型,或者该值类型所实现的任何接口类型之间的转换。

对值类型装箱,会在堆上分配一个实例对象,并将该值复制到新的对象中。

值类型的数据转换成一个引用类型的数据

20const readonly 的区别是什么? refout、和 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。效率不一样。

     |:

     ||:

!:逻辑非

~:按位取反

^:按位异或 01

22CTSCLSCLR是什么?图示 VB.Net C#.net CTSCLSCLR 之间的关系?

CTS: Common Type System 公共类型系统

CLSCommon Language Specification公共语言规范

CLR: Common Language Runtime 公共语言运行时

跨语言开发:CTS ;C#.NET,C++,VB等语言遵循CLS,---àCTS---àCLR

 

posted on 2009-05-30 11:40  icey  阅读(487)  评论(0编辑  收藏  举报