1. What does the ThreadStatic attribute do?
(线程静态成员的作用是什么)
答:1、不能被2个不同的线程共享
线程静态成员隶属于特定的线程。同一个静态成员针对不同的线程有不同的实例。
2、只在第1个生成其实例的线程中初始化线程静态成员的初始化
隶属于第1个线程的线程静态成员将根据类声明中指定的初始化函数生成特定的实例,而隶属于第1个以后的线程的静态成员将按照默认情况初始化。在不指定初始值的情况下,如果它是值类型,可依赖初始化为其默认值的字段,如果它是引用类型,则可依赖初始化为空引用(Visual Basic 中为 Nothing)的字段。
3、同一线程的线程静态成员在不同的应用域有不同的实例
线程静态成员跟特定的线程的特定应用域相关。
4、同一线程同一应用域中同类型的对象将共享一个线程静态成员
2. Does C# support multiple inheritance?
(C#支持多重继承吗)
答:支持
3. C# provides, by default a parameterless constructor. If I write a constructor that takes a string as a parameter, but want to keep the parameterless constructor. How many constructors should I write?
(C#提供默认构造函数(不带参数),如果我写了一个带有一个string类型参数的构造函数,但是又想保留不带参数的构造函数,那么我需要写多少个构造函数)
答:2
4. What’s the difference between an interface and abstract class?
(接口与抽象类有什么区别)
答:接口用于规范,抽象类用于共性。接口中只能声明方法,属性,事件,索引器。而抽象类中可以有方法的实现,也可以定义非静态的类变量。抽象类是类,所以只能被单继承,但是接口却可以一次实现多个。抽象类可以提供某些方法的部分实现,接口不可以.抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的。再抽象类中加入一个方法,那么它的子类就同时有了这个方法。而在接口中加入新的方法,那么实现它的类就要重新编写(这就是为什么说接口是一个类的规范了)。接口成员被定义为公共的,但抽象类的成员也可以是私有的、受保护的、内部的或受保护的内部成员(其中受保护的内部成员只能在应用程序的代码或派生类中访问)。此外接口不能包含字段、构造函数、析构函数、静态成员或常量。
5. What’s the difference between deep copy and shallow copy?
(深拷贝与浅拷贝有什么区别)
答:浅拷贝是指将对象中的数值类型的字段拷贝到新的对象中,而对象中的引用型字段则指复制它的一个引用到目标对象。如果改变目标对象中引用型字段的值他将反映在原是对象中,也就是说原始对象中对应的字段也会发生变化。深拷贝与浅拷贝不同的是对于引用的处理,深拷贝将会在新对象中创建一个新的和原是对象中对应字段相同(内容相同)的字段,也就是说这个引用和原是对象的引用是不同的,我们在改变新对象中的这个字段的时候是不会影响到原始对象中对应字段的内容
6. If an exception is thrown inside a catch block, will the finally block be still be called?
(如果catch块捕获了一个异常,那么finally块还会被调用吗)
答:会
7. a)Can a struct inherit from another struct?
(结构体能继承结构体吗)
答:不能
b)Can a struct inherit from another class?
(结构体能继承类吗)
答:每个结构都派生于System.ValueType,它又派生于System.Object
c)Can a struct be the base of another class?
(结构体可以作为一个类的基类吗)
答:不能
d)Can a struct implement an interface?
(结构体可以实现一个接口吗)
答:不能
e)What’s the difference between struct and class?
(结构体与类有什么区别)
答:类是引用类型,可以继承类、接口和被继承,有默认的构造函数,有析构函数,可以使用abstract和sealed,有protected修饰符,必须使用new初始化。
结构是值类型,只能继承接口,不能被继承,没有默认的构造函数,可以创建,没有析构函数,不可以用abstract和sealed,没有protected修饰符,可以不用new初始化。
如何选择使用结构还是类:
1.堆栈的空间有限,对于大量的逻辑的对象,创建类要比创建结构好一些
2.结构表示如点、矩形和颜色这样的轻量对象,例如,如果声明一个含有 1000 个点对象的数组,则将为引用每个对象分配附加的内存。在此情况下,结构的成本较低。
3.在表现抽象和多级别的对象层次时,类是最好的选择
4.大多数情况下该类型只是一些数据时,结构是最佳的选择
8.What’s the difference between Debug and Trace class?
(Debug类与Trace类有什么区别)
答:Debug类里所提供的函数仅在编译时带#Debug宏参数才奏效,一旦到了Release版本中,这些函数都会被忽略。也就是说Debug类的功能仅在程序员开发的时候能用。而Trace则不同,它能在Release版本的程序中也被运行
9. What’s the final result?
(下面这段代码的最终运行结果是什么)
double expectedValue = 1/2;
if(expectedValue > 0)
{
expectedValue = expectedValue + 0.5;
}
Console.WriteLine(expectedValue);
答:0
10. What is the role of the DataReader class in ADO.NET connections?
(DataReader在ADO.NET连接中起到什么样的角色)
答:读取数据库信息,只读向前
(线程静态成员的作用是什么)
答:1、不能被2个不同的线程共享
线程静态成员隶属于特定的线程。同一个静态成员针对不同的线程有不同的实例。
2、只在第1个生成其实例的线程中初始化线程静态成员的初始化
隶属于第1个线程的线程静态成员将根据类声明中指定的初始化函数生成特定的实例,而隶属于第1个以后的线程的静态成员将按照默认情况初始化。在不指定初始值的情况下,如果它是值类型,可依赖初始化为其默认值的字段,如果它是引用类型,则可依赖初始化为空引用(Visual Basic 中为 Nothing)的字段。
3、同一线程的线程静态成员在不同的应用域有不同的实例
线程静态成员跟特定的线程的特定应用域相关。
4、同一线程同一应用域中同类型的对象将共享一个线程静态成员
2. Does C# support multiple inheritance?
(C#支持多重继承吗)
答:支持
3. C# provides, by default a parameterless constructor. If I write a constructor that takes a string as a parameter, but want to keep the parameterless constructor. How many constructors should I write?
(C#提供默认构造函数(不带参数),如果我写了一个带有一个string类型参数的构造函数,但是又想保留不带参数的构造函数,那么我需要写多少个构造函数)
答:2
4. What’s the difference between an interface and abstract class?
(接口与抽象类有什么区别)
答:接口用于规范,抽象类用于共性。接口中只能声明方法,属性,事件,索引器。而抽象类中可以有方法的实现,也可以定义非静态的类变量。抽象类是类,所以只能被单继承,但是接口却可以一次实现多个。抽象类可以提供某些方法的部分实现,接口不可以.抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的。再抽象类中加入一个方法,那么它的子类就同时有了这个方法。而在接口中加入新的方法,那么实现它的类就要重新编写(这就是为什么说接口是一个类的规范了)。接口成员被定义为公共的,但抽象类的成员也可以是私有的、受保护的、内部的或受保护的内部成员(其中受保护的内部成员只能在应用程序的代码或派生类中访问)。此外接口不能包含字段、构造函数、析构函数、静态成员或常量。
5. What’s the difference between deep copy and shallow copy?
(深拷贝与浅拷贝有什么区别)
答:浅拷贝是指将对象中的数值类型的字段拷贝到新的对象中,而对象中的引用型字段则指复制它的一个引用到目标对象。如果改变目标对象中引用型字段的值他将反映在原是对象中,也就是说原始对象中对应的字段也会发生变化。深拷贝与浅拷贝不同的是对于引用的处理,深拷贝将会在新对象中创建一个新的和原是对象中对应字段相同(内容相同)的字段,也就是说这个引用和原是对象的引用是不同的,我们在改变新对象中的这个字段的时候是不会影响到原始对象中对应字段的内容
6. If an exception is thrown inside a catch block, will the finally block be still be called?
(如果catch块捕获了一个异常,那么finally块还会被调用吗)
答:会
7. a)Can a struct inherit from another struct?
(结构体能继承结构体吗)
答:不能
b)Can a struct inherit from another class?
(结构体能继承类吗)
答:每个结构都派生于System.ValueType,它又派生于System.Object
c)Can a struct be the base of another class?
(结构体可以作为一个类的基类吗)
答:不能
d)Can a struct implement an interface?
(结构体可以实现一个接口吗)
答:不能
e)What’s the difference between struct and class?
(结构体与类有什么区别)
答:类是引用类型,可以继承类、接口和被继承,有默认的构造函数,有析构函数,可以使用abstract和sealed,有protected修饰符,必须使用new初始化。
结构是值类型,只能继承接口,不能被继承,没有默认的构造函数,可以创建,没有析构函数,不可以用abstract和sealed,没有protected修饰符,可以不用new初始化。
如何选择使用结构还是类:
1.堆栈的空间有限,对于大量的逻辑的对象,创建类要比创建结构好一些
2.结构表示如点、矩形和颜色这样的轻量对象,例如,如果声明一个含有 1000 个点对象的数组,则将为引用每个对象分配附加的内存。在此情况下,结构的成本较低。
3.在表现抽象和多级别的对象层次时,类是最好的选择
4.大多数情况下该类型只是一些数据时,结构是最佳的选择
8.What’s the difference between Debug and Trace class?
(Debug类与Trace类有什么区别)
答:Debug类里所提供的函数仅在编译时带#Debug宏参数才奏效,一旦到了Release版本中,这些函数都会被忽略。也就是说Debug类的功能仅在程序员开发的时候能用。而Trace则不同,它能在Release版本的程序中也被运行
9. What’s the final result?
(下面这段代码的最终运行结果是什么)
double expectedValue = 1/2;
if(expectedValue > 0)
{
expectedValue = expectedValue + 0.5;
}
Console.WriteLine(expectedValue);
答:0
10. What is the role of the DataReader class in ADO.NET connections?
(DataReader在ADO.NET连接中起到什么样的角色)
答:读取数据库信息,只读向前