C#面试题.doc希望对大家能有帮组

preview
需积分: 0 11 下载量 115 浏览量 更新于2008-11-10 收藏 172KB DOC 举报
C#是一种面向对象的编程语言,它包含了三个关键的面向对象特性:继承性、封装性和多态性。继承性允许一个类(子类)继承另一个类(父类)的属性和方法,从而实现代码的复用。封装性是将数据和方法包装在类的内部,对外只提供必要的接口,以保护数据的安全。多态性则允许子类覆盖或扩展父类的方法,使得不同的对象可以对同一消息作出不同的响应。 在C#中,`foreach`循环用于遍历集合或数组,其能作用于实现了`IEnumerable`接口或者声明了`GetEnumerator`方法的类型。例如,`List<T>`和`Dictionary<TKey, TValue>`等容器类都支持`foreach`遍历。 C#的三元运算符是`?:`,它提供了简洁的条件判断语法,如`condition ? value_if_true : value_if_false`。 当一个整数变量`a`赋值给`object`类型的对象时,整数会经历装箱操作,即将值类型转换为引用类型存储在堆上。 类成员的访问修饰符有三种:`private`(私有)、`protected`(受保护)、`public`(公共),分别控制成员在类内、类及子类内和任何地方的可见性。 `public static const int A=1;`这段代码的错误在于常量(const)成员默认就是静态的,因此不需要`static`关键字。 将`float`类型强制转换为`int`会丢失小数部分,所以`int i=(int)f;`后,`i`的值是-123。 在C#中,如果声明并实现了`==`操作符,还需要重载`!=`操作符,以保持操作符的对称性。 `delegate`是C#中定义委托类型的关键词,委托可以用来封装方法,实现事件处理或回调机制。 使用`sealed`修饰的类无法被其他类继承,是封闭的。 在ASP.NET中,自定义用户控件通常继承自`System.Web.UI.UserControl`类。 `[Serializable]`特性标记表示类可以进行序列化,用于数据持久化或跨进程通信。 .NET框架的垃圾回收机制(GC)管理内存,避免内存泄露问题。 `abstract override`修饰符的错误在于`abstract`和`override`不能同时使用,因为抽象方法不需要具体实现,而`override`表明需要重写父类的方法。 类`T`只有私有构造函数时,外部不能直接创建`T`的实例,也不能派生新的类。 在`switch`语句中,`case`后面必须跟具体的值或关键字,`default`用于未匹配的情况,所以`case ():`是错误的。 `abstract`和`virtual`修饰的方法都可以被子类重写,但`abstract`方法必须在抽象类中定义且没有实现,子类必须重写;而`virtual`方法可以在普通类中定义,并提供默认实现,子类可选重写。 `System.Web.UI.Page`类在.NET中是可以被继承的,用于构建ASP.NET网页。 关于选择题: 1. 正确的叙述是B和C,接口不能包含已实现的方法,且不支持虚方法,但可以实现多个接口。 2. 从数据库读取记录,可能用到的方法是ExecuteScalar(获取单个结果)、Fill(填充数据集)和ExecuteReader(获取数据读取器)。 3. 实现`IDisposable`接口的类,可以执行释放任务的方法包括Close、Dispose和Finalize。`using`块也是用于资源管理,但它不是方法而是语句。 4. 关于ref和out参数,描述正确的是A、C和D。使用ref参数必须先初始化,而出参out则不需要,但它们都需要显式传递到方法。 在SQL Server数据库操作中,应选用SQL Server .NET Framework数据提供程序。引用类型包括string,而enum、struct和int是值类型。ASP.NET中的代码隐藏文件(.cs文件)与对应的.aspx文件一起工作,定义页面的后台逻辑。