2024年4月28日发(作者:)

1、 C#支持哪几个预定义类型:

整型(int16,32,64,byte,sbyte,uint16,32,64),浮点(single,double),字符(char),bool,decimal

主要包括5个类型,但每个类型分别由多个内置类型组成

2、 C#支持哪几个预定义的引用类型:

共两个,分别是Object 和String类型,这也是C#中使用频率最高的两个类型。

3、 如何解决装箱和拆箱引发的性能问题:

CLR(Common Language Runtime公共语言运行时:是一个运行时环境,它负责资源管

理(内存分配和垃圾收集),并保证应用和底层操作系统之间必要的分离)。

值类型实例通常分配在线程的堆栈上,并且不包含任何指向实例数据的指针。

引用类型实例分配在托管堆上,变量保存了实例数据的内存引用。

CLR将值类型的数据“包裹”到一个匿名的托管对象中,并将此托管对象的引用放在

Object类型的变量中,这个过程叫装箱(Boxing),拆箱是装箱的逆过程,对于装箱拆箱对

性能的影响的解决办法是在程序中大量使用泛型进行替代。

4、 有几种方法可以判断值类型和引用类型?

值类型与引用类型赋值区别:值类型变量赋值只是进行数据复制,创建一个同值新对象,

而引用类型变量赋值仅仅是把对象的引用的指针赋值给变量,使得变量引用于对象共享

同一个内存地址。

继承结果的区别:引用类型一般都有继承性,但由于值类型是密封的(sealed)因此值

类型不能作为其他任何类型的基类,但可以单继承或多继承接口。另外值类型都继承

ype类,引用类型不会继承此类。

内存分配区别:值类型通常分配在栈上,它的变量直接包含变量的实例,使用效率相对

较高。引用类型分配在托管堆上,变量通常包含一个指向实例的指针,变量通过该指针

来引用实例。

值类型数据是在栈中分配空间的,是在数据定义时就按所需大小分配空间。所以在数据

读取时效率较高。而引用类型是在堆中分配,类和结构都属于引用类型。通常自己定义

的数据类型大部分都是引用类型。当然,简单也最常用的一个方法是看这个类型是否继

承自ype继承此类的是值类型,否则是引用类型。

5、 如何理解C#中变量的作用域:

指可以访问该变量的代码区域。只要变量所属的类在某个作用域内,其字段(成员变量)

也在该作用域中。局部变量存在于声明该变量的块语句内,或方法结束的大括号之前的

作用域。在for或while循环中声明的变量,只在该循环体内。

6、 传递参数的方法:

有4种方法来传递参数:值传,传址,输出参数,数组参数。值传参数无须额外的修饰

符,传址参数需要修饰符ref ,输出参数需要修饰符out,数组参数需要修饰符params.

7、 如何理解C#预处理指令:

C#预处理器指令是在编译时调用的。预处理器指令通知C#编译器要编译哪些代码,并指

出如何处理指定的错误和警告。还可以提示C#编辑器有关代码组织的信息。

8、 如何理解C#中的指针:

CLR支持3种指针类型:受托管指针,非托管指针,非托管函数指针。受托管指针存存

储在堆上的托管块的引用,一个非托管指针也就是传统意义上的指针,在C#中必须要放

在unsafe代码块中使用指针。

&:寻址运算符,它表示取地址,并把一个值数据类型转换为指针。

*:间接寻址运算符,它表示获取地址的内容,把一个指针转换为数值类型。

C#中指针类型不继承Object,并且指针类型与Object之间不存在转换,此外,装箱和取

消装箱也不支持指针,但,C#允许在不同指针类型之间,以及指针类型与整型之间进行

转换。

9、 请举例tions中常用的成员:

ArrayList的基类是tions,tions中常用的类有ArrayList、Hashtable、

SortedList常用接口有ICollection、IEnumerable、IList,tions结构DictionaryEntry

可定义设置或检索的字典键/值对。

10、 循环中断

Break:立即终止循环

Continue:立即终止当前循环,并继续执行下一次循环

Goto:跳出循环,进入已经标记好的位置

Return :跳出循环及其包含的函数。

11、 StringBuilder与String有哪些区别:

特点:

1. String是引用类型,在堆上分配内存。对象一旦生成,就不可改变。

提供了大量便捷的字符串操作函数。运算时会产生一个新实例。5.在程

序中定义==和!=,可以方便比较String对象的值(而不是引用)。

StringBuilder特点:

1. StringBuilder对象是动态对象,允许扩充它所封装的字符串的字符数量。

2. StringBuilder可以用于修改StringBuilder中的内容。

在相同字符串的许多操作上,使用StringBuilder类会比使用String对象更有效率。对于少量

的字符串拼接的字符串操作,使用String类比较方便。

12、 如何实现自定义格式字符串输出

通常,执行IFormattable的类也提供接受唯一格式的ToString()。在默认条件下,ToString()

方法不接收任何参数,它继承于其他对象的类。IFormattable接口包含唯一一个ToString()

方法。另外ng()方法接收一个IFormatProvider类型的参数,以允许类

型的使用者提供格式化方法。

13、 请列举Hashtable几种常用的遍历方法:

4种遍历方法:1.以string对象为键值遍历哈希表。2.以自定义对象为键值遍历哈希表。

3.以DictionaryEntry对象为键值遍历哈希表。4.通过继承IDictionaryEnumerator接口的对

象来遍历哈希表。

14、 是引用类型还是值类型:

是引用类型对象,的只读特性使得它在对象在初始化之后就

不能再做修改,任何修改字符串对象的动作将导致一个新的字符串对象的生成。

15、 String和string的区别是什么:

string是String类型的一个别名,两者没有任何区别。

16、 如何在Byte[]和String之间进行转换?

字符串和字节数组的转换依赖于编程方式,不同的编程标准将使用不同的算法进行。

ng类型提供了大部分常见的编码算法支持,用以进行字符串和字节数

组之间的转换。

17、 Array和ArrayList的区别:

表面上Array和ArrayList类似,都具有索引,并且可以通过index来直接获取和修改任

意项。但其实Array与ArrayList集合的差别很大,主要体现在命名空间、变量声明,下

限添加插入或移除某一范围元素方法、维度、存储对象、存放方式、初始化大小、插入

和删除项等方面差异。

18、 Array与ArrayList如何进行互相转换:

从Array转换到ArrayList,为了避免重复编写大量相似的代码,通常的做法是定义一些

转换函数或转换类,从ArrayList转换到Array相对比较简单,通过调用ArrayList内置的

ToArray()方法就可以实现。

19、 C#中的checked和unchecked的作用是什么:

checked用于对整型算术运算和转换显式启用溢出检查。

Unchecked 关键字用于取消整型算术运算符和转换的溢出检查

20、 C#中is运算符与as运算符有什么作用?

is运算符用于检查对象是否与给定类型兼容,如果兼容返回true,否则false。

as运算符用于在兼容的引用类型之间执行转换,如果无法转换,返回null 。

21、

P97

22、 如何进行DateTime时间与字符串时间之间的转换?

C#中DateTime对象可通过ToString()方法来转换为时间字符串,同样C# 中DateTime对

象也提供了TryParse()方法和Parse()方法将一个时间字符串转换为DateTime对象。

23、 类与结构有什么区别?

结构与类有3个方面区别:

 结构是值类型,类是引用类型

 结构不能被另外一个结构或类继承,自身也不能被继承,而类完全可以被其他的类

继承,其自身也能被继承。

结构没有默认构造函数,也没有析构函数,并且不能有protected修饰符,但可以

C#中如何利用DateTime获取季度?

不使用new进行初始化。

结构与类的初始化都能使用new操作符,但他们之间的差别较大,主要体现在3方面:

结构是值类型,而类是引用类型;结构不能被继承而类可以,结构与类的内部结构不同。

24、 简述C#中的虚方法:

使用virtual关键字修饰符的方法就是虚方法,虚方法的关键字用于修饰属性、方法、索

引器或事件声明,并使他们可以在派生类中被重写。虚方法必须并提供派生类覆盖该方

法的选项,并且必须有实现部分。虚方法的作用是可以在派生类中被重写。

25、 简述C#中的密封类和密封方法

密封类使用sealed关键字进行修饰,它不能用其他类的基类,并且他没有派生类。密封

类的作用是防止其他类继承该类。密封方法是使用sealed关键字进行修饰的方法,他并

不影响类的继承,但它可以防止重写基类中特定的虚方法。

26、 静态类构造方法的特点:

C#构造方法有以下4个特点:

只允许有一个无参的静态构造方法在一个类中存在。

静态的构造方法不会被继承。

在所有静态成员被引用之前执行静态构造方法。

 在所有的构造方法中最先被执行的是静态的构造方法。

C#中静态构造方法主要有4大特点,静态构造方法最主要的特点是:静态的构造方法是

最先被执行的构造方法,并且在一个类里只允许有一个无参的静态构造方法。

27、 简述C#派生类中的构造函数?

使用C#派生类中的构造函数时,需要注意关键字base与this的区别,关键字base表示

调用基类中的构造函数,而this表示调用本类中的构造函数。

28、 简述接口及接口继承:

接口是把隐式公共方法和属性组合起来,以封装特定功能的一个集合。当定义了接口,

就必须在继承类中实现他,这样类就支持接口中所指定的所有属性和成员。

29、 什么是事件机制

事件是。Net程序员中经常使用的一个机制,事件是一种使对象或类能够提供通知的成

员,客户端可以通过提供事件处理处理程序为相应的事件添加可执行代码,事件可以理

解为一个特殊的委托。

30、 简述EventHandlerList的作用:

EventHandlerList最主要的作用就是提供一个存储事件的集合,程序员可以方便地将某个

类型中多个事件维护在EventHandlerList集合中,而不需要独立的维护每一个事件。

31、 什么是委托:

委托类都继承自te类型。委托类型的声明与方法签名相似,有一个返回值

和任意数目任意类型的参数。委托是一种可用于封装命名或匿名方法的引用类型。委托

类似于函数指针,但是委托是类型安全和可靠的。

32、 C#中被委托的方法必须是静态的么?

委托不仅能绑定静态方法,同时也可绑定实例方法。当绑定实例方法时,

属性将会设置成指向该实例方法所属类型的一个实例对象,当绑定静态方法时,

属性将会被设置成null

33、 什么事多播委托:

多播委托是指一个由委托串成的链表,当链表上的一个委托被回调时,所有链表上该委

托的后续委托将会被顺序执行。但要注意,多播委托必须是同类型的,返回类型必须是

void并且不能带输出参数(但可以带引用参数)

34、 的request对象有哪些:

Request对象的作用是与客户端交互,收集客户端的Form,Cookies,超链接,或者收集服务

器端的环境变量。

35、 的Response对象有哪些:

Response 对象是用于访问服务器端所创建的并发回到客户端的响应信息。为脚本提供

http变量,指明服务器和服务器的功能和关于发回浏览器的内容的信息,以及任何将为

这个域而存放在浏览器里新的se对象也提供了一系列的方法用于创建输

出,例如无处不在的()方法。

36、 的Server对象有哪些:

Server对象也是内置对象之一。它提供服务器端最基本的属性和方法,如获取

服务器名称,访问路径,html编码等操作都需要借助server对象,server对象返回的是

一个HttpServerUtility类型实例。

37、 什么是ViewState?

用于生成页面要用的状态值保存在一个隐藏域中。ViewState也是一个非常有用的特性,

它能持久化客户端的状态,而不用Cookie或者服务器的内存。

38、 ViewState优缺点有哪些?

优点主要是使用简单、存储的数据不受时间的限制。缺点主要有不能执行跨页面操作、

不适合存储大数据量的信息。

39、 Session、ViewState、Cookie之间有何区别?

Session不适应长时间地保持数据。它有时间限制,系统默认时长是20分钟。对于小量

的数据来说,使用Session是一个不错的选择。ViewState常用于保存单个用户的状态信

息,有效期等于页面的生存期,虽然没有时间限制,但它不适应存储大数据。Cookie用

于保存客户浏览器请求服务器页面的请求信息,由于并非所有浏览器都支持Cookie,并

且它是以明文方式保存的,所以最好不要保存敏感性内容。

40、 中常见的页面跳转方法?

ct()方法、er()方法、e()方法、Html超链接、

HyperLink控件js脚本

41、

SqlServer特点:可跨服务器维护用户会话信息,且信息不会丢失,但工作负载较大。

42、 using块的工作方式类似于Try….Finally构造,在该构造中,Try块使用资源,而Finally

块释放资源。因此,不管如何退出块,using块都可以保资源的释放,即使发生未处理

的异常。

43、

44、

事物具有ACID属性,即Atomic原子性 Consistent一致性Isolated隔离性Durable

持久性。

有道笔记