C#面向对象基础概念25问详解

4星 · 超过85%的资源 需积分: 9 10 下载量 137 浏览量 更新于2024-07-23 收藏 407KB DOC 举报
C#面向对象编程是.NET框架中的核心概念,它提供了丰富的特性来组织和管理代码。本文档列举了C#中面向对象的25个基础概念,涵盖了静态成员与非静态成员的区别、const和static readonly的异同、extern关键字的作用、抽象类和接口的概念、以及诸如this关键字、虚函数和重写、资源管理、P/Invoke技术、字符串处理、类型转换、参数传递、反射等重要知识点。 1. 静态成员与非静态成员: - 静态成员(static)是在类级别定义的,如变量和方法,不依赖于类的具体实例。它们在整个程序执行期间只创建一次,所有实例共享同一份副本。 - 非静态成员(non-static)属于类的实例,每个对象都有自己的实例。例如,成员变量根据对象实例的不同可能有不同的值。 2. const与static readonly: - const用于常量,一旦初始化就不能改变其值。 - static readonly用于只读字段,其值在编译时确定且不可修改,但可以在类加载时赋值。 3. extern关键字: - 这是用来引用其他编译单元中的类型或变量,主要用于链接外部库或预编译头文件。 4. abstract和override: - abstract关键字用于声明抽象类或抽象方法,不允许实例化,提供了一个接口供子类实现。 - override用于重写基类的方法,只有当子类实现了抽象基类中的抽象方法时才有效。 5. 内部访问修饰符: - internal允许类内部的成员对同一命名空间内的其他类可见,但对外部不可见。 6. sealed修饰符: - 用于标记类为密封的,阻止进一步的子类扩展,但已存在的子类仍然有效。 7. override和overload: - override关注的是方法的实现,子类提供一个与基类方法功能相同但可能行为不同的版本。 - overload则指在同一类中声明多个方法,具有相同的名称但参数列表不同,实现多态性。 8. 索引指示器: - 用于访问数组或集合类型的元素,提供了一种通过下标访问特定位置数据的方式。 9. new修饰符: - 在继承时,new关键字用来覆盖基类的同名成员,确保子类拥有独立的实现。 10. this关键字: - this关键字用于引用当前对象的实例,通常在方法内部引用成员变量或调用方法。 11. 抽象函数与虚函数: - 抽象函数只能存在于抽象类中,而虚函数则可以被子类重写。 12. 封闭类与虚函数: - 密封类不接受任何形式的子类,所以不可能包含虚函数。 13. 属性访问器: - 用于封装数据成员,提供get和set方法,方便对象的交互和保护数据。 14. abstract与virtual: - abstract和virtual都用于声明可被重写的方法,但abstract不能与其他修饰符一起使用。 15. 接口与类、结构的区别: - 类提供了属性和方法的实现,结构通常用于轻量级数据存储,接口仅定义方法签名。 16. 接口多继承的问题: - C#不支持直接的多重继承,但通过接口可以间接实现多重接口。 17. 抽象类与接口的对比: - 抽象类提供部分实现,接口只定义方法签名;抽象类适合有共同实现的部分,接口强调行为规范。 18. 别名指示符: - 可能指的是using指令,用于引入其他命名空间的类型,简化代码。 19. 手动释放资源: - 使用try-finally块或using语句确保对象在不再需要时正确关闭或释放资源。 20. P/Invoke: - 这是一种跨语言调用机制,用于在.NET代码中调用Windows API或COM组件。 21. StringBuilder与String: - StringBuilder用于高效地构建字符串,而String是不可变的,每次修改都会创建新对象。 22. explicit和implicit类型转换: - explicit是显式转换,需要明确指定,而implicit是隐式转换,编译器自动处理。 23. params: - 参数前缀params表示它可以接收不定数量的参数,通常用于方法的可变参数列表。 24. 反射: - 反射机制允许程序在运行时检查类型信息、获取和修改属性、调用方法等,增强了程序的灵活性和自适应性。 通过学习和理解这些基础概念,开发者可以更好地构建C#应用程序,并利用面向对象编程的优势。