1、1. 面向对象系统最突出的特点是什么,优点?1.三个基本特征:封装、继承、多态2.允许用实体或对象的思想方法来分析和设计应用程序,从而使软件开发过程更接近人的思维过程,并极大地提高程序设计的效率。2. 简述变量(标示符)命名的规则,有哪几种常用的命名样式?1.要使用可以准确说明变量/字段/类的完整的英文描述符,如firstName。对一些作用显而易见的变量可以采用简单的命名,如在循环里的递增(减)变量就可以被命名为 “i”。2.要尽量采用项目所涉及领域的术语。3.要采用大小写混合,提高名字的可读性。为区分一个标识符中的多个单词,把标识符中的每个单词的首字母大写。不采用下划线作分隔字符的写法。有
2、两种适合的书写方法,适应于不同类型的标识符:PasalCasing:标识符的第一个单词的字母大写;camelCasing:标识符的第一个单词的字母小写。3. 简述接口和抽象类的相同点和区别 1. 相同点:都不能直接被实例化,都可以通过继承实现其抽象方法。都是面向抽象编程的技术基础,实现了诸多的设计模式。2.不同点:接口支持多继承;抽象类不能实现多继承。接口只能定义抽象规则;抽象类既可以定义规则,还可能提供已实现的成员。接口是一组行为规范;抽象类是一个不完全的类,着重族的概念。接口可以用于支持回调;抽象类不能实现回调,因此继承不支持。接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含
3、实现的方法;抽象类可以定义字段、属性、包含有实现的方法。接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。例如,struct就可以继承接口,而不能继承类。4. 重载、覆盖的区别重载指的是同一个类中有两个或多个名字相同但是参数不同的方法,(注:返回值不能区别函数是否重载),重载没有关键字。 过载也称重写是指子类对父类中虚函数或抽象函数的“覆盖”(这也就是有些书将过载翻译为覆盖的原因),但是这种“覆盖”和用new关键字来覆盖是有区别的。 new:覆盖指的是不同类中(基类或派生类)有两个或多个返回类型、方法名、参数都相同,但是方法体不同的方法。 但是这种覆盖是一种表面上的覆盖,所以也叫隐藏,
4、被覆盖的父类方法是可以调用得到的。5. C#图形编程中,有几种类型的画刷 SolidBrush HatchBrush TextureBrush PathGradientBrush 6. C#图形编程中,有几种创建图形对象的方法,请列举?1.通过 OnPaint,使用 PaintEventArgs 中提供的对象2.通过代码中的其他区域,该函数是 Control 的一个方法,可以用来创建任何控件的图形对象3.直接在一个位图中绘制7. 为什么要使用线程同步?为了解决线程的同步问题,可以采用哪几种方法。1.保护应用程序的资源不被破坏2. volatile关键字 lock关键字 System.Threa
5、ding.Interlocked Monitor Mutex ReaderWriterlock SynchronizationAttributer MethodImplAttribute 同步事件和等待句柄8. 线程优先级有哪些?设定线程优先级的方法?线程优先级的设定对线程有何影响?1. 由高到低:Highest、AboveNormal、Normal 、BelowNormal、Lowest2. Thread类Priority属性设置;3.设定线程的优先级,可以安排一些相对重要的线程优先执行9. C#图形编程中,有几种创建图形对象的方法,请列举?1. 通过 OnPaint,使用 PaintEve
6、ntArgs 中提供的对象2. 通过代码中的其他区域,该函数是 Control 的一个方法,可以用来创建任何控件的图形对象3. 直接在一个位图中绘制10. 几种静态和非静态方法的区别(静态成员、非静态成员、静态构造函数、非静态构造函数、静态方法、非静态方法)1.C#静态成员: 静态成员属于类所有,非静态成员属于类的实例所有。 每创建一个类的实例,都会在内存中为非静态成员新分配一块存储; 非静态成员属于类所有,为各个类的实例所公用,无论类创建了多少实例, 类的静态成员在内存中只占同一块区域。2.C#静态方法C#静态方法属于类所有,类实例化前即可使用。非静态方法可以访问类中的任何成员,静态方法只能
7、访问类中的静态成员。 因为静态方法在类实例化前就可以使用,而类中的非静态变量必须在实例化之后才能分配内存, 这样,C#静态方法调用时无法判断非静态变量使用的内存地址。所以无法使用。而静态变量的地址对类来说是固定的,故可以使用。3C#静态方法是一种特殊的成员方法 它不属于类的某一个具体的实例,而是属于类本身。所以对静态方法不需要首先创建一个类的实例,而是采用类名.静态方法的格式 。static方法是类中的一个成员方法,属于整个类,即不用创建任何对象也可以直接调用! static内部只能出现static变量和其他static方法!而且static方法中还不能使用this.等关键字.因为它是属于整个
8、类!静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存.C#中的方法有两种:实例方法,静态方法.4.C#静态方法中获取类的名称 静态方法中用:stringclassName= System.Reflection.MethodBase. GetCurrentMethod().ReflectedType.FullName; 非静态方法中还可以用:stringclassName=this.GetType().FullName; C#静态方法与非静态方法的区别解析旨在诠释C#静态方法的含义11. 简述如何用command和connect对象对数据库进行操作。1. 建立数据库连接对象(connection对象)2. 打开数据库连接(connection对象open方法)3. 建立数据库命令对象,指定命令对象所使用的连接对象(command)4. 指定命令对象的属性(CommandText属性)5. 执行命令(command的方法,如ExecuteReader)6. 操作返回结果(对SqlReaderData对象进行读取)7. 关闭数据库连接