摘要:
如何理解委托?答:有点类似于指针,但他是类型安全的,通过对于方法特征和返回类型的声明,封装了具有相同特征和返回类型的方法。不关心该方法是什么类型的对象,甚至是静态的还是实例的。委托可以连接在一起,可以对一个事件调用多个方法。 阅读全文
摘要:
值类型和引用类型的区别?答:值类型直接存储其值,引用类型存储对值的引用。值类型存储在堆栈中,而引用类型存储在托管堆上。值类型包括:简单类型、结构类型、枚举类型;引用类型包括:类、数组、接口、委托、字符串、数组。 阅读全文
摘要:
重载方法、虚拟方法的区别?答:重载方法:是指使用相同的方法名,但指定不同的参数(个数,类型)。 虚拟方法:在基类中对要实现多态性的方法加上virtual关键字,在派生类中的同名方法前面,加上override关键字修饰,并改写该方法的代码。 阅读全文
摘要:
ADO.net中常用的对象有哪些?分别描述一下。答:Connection 数据库连接对像 Command 数据库命令 DataReader 数据读取器 DataSet 数据集DataReader与Dataset有什么区别? 答:一个是只能向前的只读游标,一个是内存中的表。 阅读全文
摘要:
什么是虚函数?什么是抽像函数? 答:虚函数:可由子类继承并重写的函数。 抽像函数:规定其非虚子类必须实现的函数,必须被重写。 阅读全文
摘要:
sleep() 和 wait() 有什么区别?答:sleep()方法是将当前线程挂起指定的时间。 wait()释放对象上的锁并阻塞当前线程,直到它重新获取该锁。 阅读全文
摘要:
什么是强类型系统? 答:变量必须先声明才能使用。而在弱类型的语言中,变量可以不声明就使用,RTTI:类型识别系统。 阅读全文
摘要:
什么是受管制的代码? 答:unsafe:非托管代码。不经过CLR运行。 阅读全文
摘要:
什么是装箱和拆箱?答:从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。 阅读全文
摘要:
CTS、CLS、CLR分别作何解释? 答:CTS:通用类型系统。CLS:通用语言规范。CLR:公共语言运行库。 阅读全文
摘要:
描述一下C#中索引器的实现过程,是否只能根据数字进行索引? 答:索引器是一种特殊的类成员,它能够让对象以类似数组的方式来存取, 使程序看起来更为直观,更容易编写,可以用任意类型。 阅读全文
摘要:
重载与覆盖的区别?答:1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系 2、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。 3、覆盖要求参数列表相同;重载要求参数列表不同。 4、覆盖关系中,调用那个方法体,是根据... 阅读全文
摘要:
C#中property与attribute的区别?答:attribute:自定义属性的基类;property:类中的属性 阅读全文
摘要:
C#可否对内存进行直接的操作?答:C#可以直接对内存进行操作。但是默认情况下,为了保持类型安全,C#不支持指针运算。不过,通过使用unsafe关键字,可以定义可使用指针的不安全上下文。 阅读全文
摘要:
在c#中using和new这两个关键字有什么意义?答:using 引入名称空间或者使用非托管资源, new 新建实例或者隐藏基类方法 阅读全文
摘要:
成员变量和成员函数前加static的作用?答:它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分别用来反映类的状态。比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作。 阅读全文
摘要:
堆和栈的区别?答: 栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上。 堆:一般由程序员分配释放。用new、malloc等分配内存函数分配得到的就是在堆上栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义;堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确... 阅读全文
摘要:
进程和线程的区别?答:进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源。答:线程(Thread)与进程(Process)二者都定义了某种边界,不同的是进程定义的是应用程序与应用程序之间的边界,不同的进程之间不能共享代码和数据空间,而... 阅读全文
摘要:
abstract class和interface有什么区别?答: 声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽... 阅读全文
摘要:
启动一个线程是用run()还是start()? 答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。 阅读全文