C#/.NET面试精华:面向对象特性、foreach与基础语法

需积分: 50 20 下载量 27 浏览量 更新于2024-09-11 1 收藏 111KB DOC 举报
本文档汇总了针对.NET和ASP.NET面试的常见问题及其解答,旨在帮助求职者准备面试,了解技术细节。以下是一些关键知识点的详细解析: 1. **面向对象特性**: - 面向对象的语言如.NET(C#)支持三大特性:继承性(Inheritance)、封装性(Encapsulation)和多态性(Polymorphism)。继承性允许子类继承父类的属性和方法;封装性则是隐藏实现细节,只对外提供接口;多态性使得同一种操作可以作用于不同类型的对象。 2. **foreach循环与迭代器**: - 在.NET中,能用foreach遍历的对象需要实现`IEnumerable`接口或声明`GetEnumerator()`方法,这样可以确保对象提供了序列化的方式。 3. **C#三元运算符**: - C#中的三元运算符`?:`,也称为条件运算符,用于根据条件表达式的真假返回两个表达式的其中一个结果。 4. **装箱和拆箱**: - 当将整数类型(如int)赋值给`object`类型时,整数会被“装箱”成`Int32`对象,以便与.NET的泛型兼容。反之,从`object`到整数类型的转换则称为“拆箱”。 5. **类成员访问权限**: - 类成员有三种访问形式:公有(Public)、私有(Private)和受保护(Protected),分别对应不同的访问级别。 6. **常量和静态成员**: - 代码中的错误是`public static const int A = 1;`中,`const`成员通常与`static`一起使用,但这里建议去掉`static`关键字,因为`const`变量默认就是类级别的。 7. **委托和操作符重载**: - 委托是.NET中用于引用方法的类型,声明关键字是`delegate`。操作符重载时,若只重载`==`,那么`!=`也应被重载,以保持一致性。 8. **密封类**: - `sealed`修饰的类表示不能被其他类继承,增强了代码的安全性和稳定性。 9. **用户控件基础**: - ASP.NET中的自定义用户控件(UserControl)必须继承自`System.Web.UI.UserControl`基类,以便正确集成到Web应用程序中。 10. **序列化与`Serializable`标记**: - .NET中所有可序列化的类都会标记为`[Serializable]`,使得对象能够在不同场景下(如网络传输、存储)持久化数据。 11. **垃圾回收(GC)与内存管理**: - .NET托管代码中,内存管理由垃圾回收器(GC)自动处理,避免了开发者手动管理内存可能导致的漏洞。 12. **抽象类和虚方法**: - 抽象类不能直接实例化,错误在于`abstractoverride`一起修饰,`abstract`修饰方法后无需再加`override`。 13. **构造函数和派生类**: - 如果类T只声明了私有构造函数,那么外部无法直接创建T的实例,但可以派生出新的类。 14. **switch语句与case**: - 代码中有错误,`case ():`是不合法的,正确的写法应该是`case _:`或者`case value:`,且`default`不能跟在`case`后面。 15. **`System.Web.UI.Page`类的继承性**: - `System.Web.UI.Page`类可以被继承,它是ASP.NET页面生命周期的基础,通常作为其他自定义控件的基类。 通过学习和掌握这些知识点,面试者可以更自信地应对.NET和ASP.NET相关的面试挑战。