📅  最后修改于: 2020-11-01 02:03:11             🧑  作者: Mango
下面列出了最常见的C#面试问题和答案。
C#是一种简单,现代的通用编程语言。它是Microsoft开发的一种面向对象的编程语言。这是一种安全且托管的语言,由.NET框架编译以生成Microsoft中间语言(机器代码)。
C#是为公共语言基础结构(CLI)设计的。它包含可执行代码和运行时环境,使用户能够在不同的计算机平台和体系结构上使用各种高级语言。
这些是使用C#语言的主要原因:
您可以在应用程序中的任何位置访问公共声明的变量。
静态声明的变量可全局访问,而无需创建类的实例。
Void是类型修饰符,它指定该方法不返回任何值。
构造函数是该类中的成员函数,并且与该类具有相同的名称。每当创建对象类时,都会自动调用构造函数。它在初始化类时构造数据成员的值。
基本上,有五种类型的构造函数:
首次引用该类时,将使用静态构造函数初始化静态数据成员。
方法重载是在同一类中创建具有相同名称和唯一签名的多个方法的机制。进行编译时,编译器使用重载解析来确定要调用的特定方法。
没有
数组是一组相关实例,包括值或引用类型。
C#支持三种类型的数组:
ArrayList是一个动态数组。您可以在运行时从ArrayList中添加和删除元素。在ArrayList中,元素不会自动排序。
集合用作其他类实例的容器。所有类都实现ICollection接口。
接口是仅具有公共抽象方法的抽象类。这些方法仅具有声明,而没有定义。这些抽象方法必须在继承的类中实现。
Lock语句用于确保一个线程不输入代码的关键部分,而另一个线程在关键部分。如果另一个线程尝试输入锁定的代码,它将等待,阻塞,直到对象被释放为止。
如果要通过网络传输对象,则必须将对象转换为字节流。将对象转换为字节流的过程称为序列化。
int m_PersonID = 0;
public int PersonID
{
get { return m_PersonID; }
set { m_PersonID = value; }
}
早期绑定和晚期绑定是多态性的概念。 C#中有两种类型的多态性。
以下是通常用于辅助功能的访问修饰符:
抽象类可以有抽象的具体方法,而接口只有抽象的方法。
用户显式调用dispose()方法以释放非托管资源,例如文件,数据库连接等,而垃圾回收器隐式调用finalize()方法以释放非托管资源,例如文件,数据库连接等。
dispose()方法属于IDisposable接口,而finalize()方法属于Object类。
方法参数在方法重载中必须不同,而在方法重载中必须相同。
方法重载不需要继承,它发生在同一类中。但是方法重写中需要继承。
对象池是准备使用的对象的容器。它减少了创建新对象的开销。
C#中的委托是一个对象,其中包含对方法的引用。就像C++中的函数指针一样。
哈希表是键/值对的集合。它包含基于键的值。
反射允许我们在运行时获取元数据和对象的程序集。
垃圾回收是释放内存的过程,这些内存将自动被不再访问的对象占用。