大家好,欢迎来到IT知识分享网。
目录
6.请详述在C#中类(class)与结构(struct)的异同?
12.C#实现多态的过程中 overload 重载 与override 重写的区别?
15.C#中索引器的实现过程,是否只能根据数字进行索引,请描述一 下
16.C#中 abstract class和interface有什么区别?
18.字符串中string str=null和string str=””和string str=string.Empty的区别
19.byte b = ‘a’; byte c = 1; byte d = ‘ab’; byte e = ‘啊’; byte g = 256; 这些变量有些错误是错在哪里?
20.string和StringBuilder的区别,两者性能的比较
27.Strings = new String(“xyz”);创建了几个String Object?
30.Math.Round(11.5)等於多少? Math.Round(-11.5)等於多少?
44.在.NET托管代码总我们不必担心内存泄漏,这是因为有了?
1.C#中堆和栈的区别?
malloc
等分配内存函数分配得到的就是在堆上。 存放在栈中时要管存储顺序,保持着先进后出的原则,他是一片连续的内存域,有系统自动分配和维护;
来回收。
GC
管理。当栈顶元素使用完毕,立马释放。而堆则需要
GC
清理。
2.C#中的委托是什么?事件是不是一种委托?
比如:
onclick
事件中的参数就是一种方法。
3.C#静态构造函数特点是什么?
>
静态构造函数
>
实例变量
>
实例构造函数
4.CTS、CLS、CLR分别作何解释
:通用语言系统。
CLS
:通用语言规范。
CLR
:公共语言运行库。
:
Common Type System
通用类型系统。
Int32
、
Int16
→
int
、
String
→
string
、
Boolean
→
bool
。
.NET
通过
CTS
提供了公共的类型,然后翻译生成对应的
.NET
类型。
:
Common Language Specification
通用语言规范。不同语言语法的不同。每种语言都有自己的语法,.NET
通过
CLS
提供了公共的语法,然后不同语言翻译生成对应的
.NET
语法。
:
Common Language Runtime
公共语言运行时,就是
GC
、
JIT
等这些。有不同的
CLR
,比如服务器
、
Linux CLR
(
Mono
)、
Silverlight CLR(CoreCLR)
。相当于一个发动机,负责执行
IL
。
5.C#中什么是值类型与引用类型?
struct
、
enum
、
int
、
float
、
char
、
bool
、
decimal
class
、
delegate
、
interface
、
array
、
object
、
string
6.请详述在C#中类(class)与结构(struct)的异同?
可以被实例化
,
属于引用类型
,
可以实现接口和单继承其他类
,
还可以作为基类型
,
是分配在内存的堆上的
属于值类型
,
不能作为基类型
,
但是可以实现接口
,
是分配在内存的栈上的
.
7.new关键字的作用
8.int?和int有什么区别
?为可空类型,默认值可以是
null
默认值是
0
是通过
int
装箱为引用类型实现
9.C#中值传递与引用传递的区别是什么?
ref
和
out
来决定参数是否按照引用传递。
10.C#中参数传递 ref 与 out 的区别?
1
)
ref
指定的参数在函数调用时必须先初始化,而
out
不用
2
)
out
指定的参数在进入函数时会清空自己,因此必须在函数内部进行初始化赋值操作,而
ref
不用
ref
可以把值传到方法里,也可以把值传到方法外;
out
只可以把值传到方法外
string
作为特殊的引用类型,其操作是与值类型看齐的,若要将方法内对形参赋值后的结果传递出来,需要加上ref
或
out
关键字。
11.C#中什么是装箱和拆箱?
1
)第一步:新分配托管堆内存
(
大小为值类型实例大小加上一个方法表指针。
2
)第二步:将值类型的实例字段拷贝到新分配的内存中。
3
)第三步:返回托管堆中新分配对象的地址。这个地址就是一个指向对象的引用了。
这个过程就是装箱!就是将
i
装箱!
这个过程
obj
拆箱!
12.C#实现多态的过程中 overload 重载 与override 重写的区别?
重写与
overload
重载的区别。
是进行基类中函数的重写。实现多态。
13.C#
中
static
关键字的作用?
static
关键字修饰,称为静态成员,通过类名加访问操作符
“.”
进行访问
;
对
static
关键字,称为非静态成员或实例成员。
:
静态字段在内存中只有一个拷贝,非静态字段则是在每个实例对象中拥有一个拷贝。而方法无论是否
14.C# 成员变量和成员函数前加static的作用?
new
15.C#中索引器的实现过程,是否只能根据数字进行索引,请描述一 下
通过提供索引器,可以象处理数组一样处理对象。特别是属性,每一个元素都以一个
get
或
set
方法暴
HASHMAP
的字符串,所以,通常来说,
C#
中
THIS
,但也可以有无数个,只要你的参数列表不同就可以了索引器和返
,
索引器最大的好处是使代码看上去更自然,更符合实际的思考模式。
class SampleCollection
),并为其提供了简
get
和
set
访问器 方法(作为分配和检索值的方法)。
Program
类为存储字符串创建了此类的一个
16.C#中 abstract class和interface有什么区别?
声明抽象类抽象方法,一个类中有抽象方法,那么这个类就是抽象类了。所谓的 抽象方法,就是不含主体(不提供实现方法),必须由继承者重写。因此,抽象类不可实例化,只能通 过继承被子类重写。
声明接口,只提供一些方法规约,在
C#8
之前的版本中不提供任何实现,在
C#9
版本也可以支 持接口的实现;不能用public
、
abstract
等修饰,无字段、常量,无构造函数
中不能有字段,而
abstract class
可以有
; 2.interface
中不能有
public
等修饰符,而
abstract
可以有。
3.interface
可以实现多继承 。
17.C#中用sealed修饰的类有什么特点?
18.字符串中string str=null和string str=””和string str=string.Empty的区别
相当于
“”,Empty
是一个静态只读的字段。
string str=”” ,
初始化对象,并分配一个空字符串 的内存空间 string str=null,
初始化对象,不会分配内存空间
19.byte b = ‘a’; byte c = 1; byte d = ‘ab’; byte e = ‘啊‘; byte g = 256; 这些变量有些错误是错在哪里?
,
1
个汉字
=2
个
byte
,
1
个英文
=1
个
byte=8bit
bc
是对的,
deg
是错的。
‘a’
是
char
类型,
a
错误
取值范围是
-128~127,
而
C#
里一个
byte
是
0~255
20.string和StringBuilder的区别,两者性能的比较
16
,可以允许扩充它所封装的字符串中字符的数量
.
每个
StringBuffer
对象都有 一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会 自动增加容量。
stringbuilder
不一定总是优于
strin
因为
stringbulider
对象的创建 也消耗大量的性能,在字符串连接比较少的情况下,过度滥用stringbuilder
会导致性能的浪费而非节约,只有大量无法预知次数的字符串操作才考虑stringbuilder
的使用。从最后分析可以看出如果是相对 较少的字符串拼接根本看不出太大差别。
的使用,最好制定合适的容量值,否则优于默认值容量不足而频繁的进行内存分
21.什么是扩展方法?
“
添加
”
方法,无需修改类型
1.
必须要静态类中的静态方法
2.
第一个参数的类型是要扩展的类型,并且需要添加this
关键字以标识其为扩展方法
22. 特性是什么?如何使用?
Attribute
特性就是关联了一个目标对象的一段配置信息,本质上是一个类,其为目标元素提供关联附加信息,这段附加信息存储在dll
内的元数据,它本身没什么意义。运行期以反射的方式来获取附加信息
23.什么叫应用程序域(AppDomain)
24.byte a =255;a+=5;a的值是多少?
的取值范围是
-2
的
8
次方至
2
的
8
次方
-1
,
-256
至
258
,
a+=1
时,
a
的值时
0
,
a+=5
时,
a
的值是
0
,所 以a+=5
时,值是
4
25.const和readonly有什么区别?
、初始化位置不同。
const
必须在声明的同时赋值;
readonly
即可以在声明处赋值
;
、修饰对象不同。
const
即可以修饰类的字段,也可以修饰局部变量;
readonly
只能修饰类的字段
、
const
是编译时常量,在编译时确定该值;
readonly
是运行时常量,在运行时确定该值。
、
const
默认是静态的;而
readonly
如果设置成静态需要显示声明
、修饰引用类型时不同,
const
只能修饰
string
或值为
null
的其他引用类型;
readonly
可以是任何类型。
26.分析下面代码,a、b的值是多少?
byte
,一个中文占占两个
byte
,所以
a=8,b=5
27.Strings = new String(“xyz”);创建了几个String Object?
“xyz”,
一个是指向
“xyz”
的引用对象
s
。
28.c#可否对内存直接操作
在
unsafe
模式下可以使用指针对内存进行操作
,
但在托管模式下不可以使用指针,
C#NET
默认不运行带指针的,需要设置下,选择项目右键->
属性
->
选择生成
->“
允许不安全代码
”
打勾
->
保存
29.什么是强类型,什么是弱类型?哪种更好些?为什么?
,
弱类型相比而言不安全,在运行的时候容易出现错误,但它灵活, 多用于解释型编程语言,如javascript
等
30.Math.Round(11.5)等於多少? Math.Round(-11.5)等於多少?
31.&和&&的区别
&&
都可作逻辑与的运算符,表示逻辑与(
and
),当运算符两边的表达式的结果都为
true
时,其结 果才为true
,否则,只要有一方为
false
,则结果为
false
。(
ps
:当要用到逻辑与的时候
&
是毫无意义, &本身就不是干这个的)
“;
不同点
具有短路的功能,即如果第一个表达式为
false
,则不再计算第二个表达式,对于上面的表达式,当loginUser为
null
时,后面的表达式不会执行,所以不会出现
NullPointerException
如果将
&&
改为
&
,则 会抛出NullPointerException
异常。(
ps
:所以说当要用到逻辑与的时候
&
是毫无意义的) & 是用作位运算的。 总结 &是位运算,返回结果是
int
类型
&&
是逻辑运算,返回结果是
bool
类型
32.i++和++i有什么区别?
是先赋值,然后再自增;
++i
是先自增,后赋值。
,
i++=0
,
++i=1
;
Console.WriteLine(++i==i++);
结果位
true
33.as和is的区别
在转换的同时判断兼容性,如果无法进行转换,返回位
null
(没有产生新的对象),
as
转换是否成功
null is
只是做类型兼容性判断,并不执行真正的类型转换,返回
true
或
false
,对象
null
也会返回
false
。
比
is
效率更高,
as
只需要做一次类型兼容检查
34.谈谈final、finally的区别。
:不能作为父类被继承。一个类不能声明是
final
,又声明为
abstract
。
:用于
try{}catch{}finally{}
结构,用于异常处理时执行任何清除操作。
35.简述C#成员修饰符
指示该方法或属性没有实现。
指定域或局部变量的值不能被改动。
声明一个事件。
指示方法在外部实现。
对由基类继承成员的新实现。
指示一个域只能在声明时以及相同类的内部被赋值。
指示一个成员属于类型本身
,
而不是属于特定的对象。
指示一个方法或存取器的实现可以在继承类中被覆盖。
36.什么是匿名类,有什么好处?
37.说说什么是逐字字符串
38.列举你知道的数字格式化转换
39.说说字符串拼接、字符串内插法
40.什么是虚函数?什么是抽象函数?
41.什么是WebService?
Web Service
是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service
能与其他兼容的组件进行互操作。
42.ADO.NET常用对象有哪些?
:
主要是开启程序和数据库之间的连接。没有利用连接对象将数据库打开,是无法从数据 库中取得数据的。Close
和
Dispose
的区别,
Close
以后还可以
Open
,
Dispose
以后则不能再用。
:
主要可以用来对数据库发出一些指令,例如可以对数据库下达查询、新增、修改、删除数
Connection
对象上,也就是
: 对象是通过在
Connection
对象连接到数据源。
:
主要是在数据源以及
DataSet
之间执行数据传输的工作,它可以透过
Command
对象下 达命令后,并将取得的数据放入DataSet
对象中。这个对象是架构在
Command
对象上,并提供了许多 配合DataSet
使用的功能。
:
这个对象可以视为一个暂存区(
Cache
),可以把从数据库中所查询到的数据保留起来甚至可以将整个数据库显示出来,DataSet
是放在内存中的。
DataSet
的能力不只是可以储存多个
Table
而已,还可以透过DataAdapter
对象取得一些例如主键等的数据表结构,并可以记录数据表间的关联。 DataSet 对象可以说是
ADO.NET
中重量级的对象,这个对象架构在
DataAdapter
对象上,本身不具备和 数据源沟通的能力;也就是说我们是将DataAdapter
对象当做
DataSet
对象以及数据源间传输数据的桥 梁。DataSet
包含若干
DataTable
、
DataTableTable
包含若干
DataRow
。
:
当我们只需要循序的读取数据而不需要其它操作时,可以使用
DataReader
对象。
对象只是一次一次向下循序的读取数据源中的数据,这些数据是存在数据库服务器中的,而 不是一次性加载到程序的内存中的,只能(通过游标)读取当前行的数据,而且这些数据是只读的,并不允许作其它的操作。因为DataReader 在读取数据的时候限制了每次只读取一条,而且只能只读,所以使用起来不但节省资源而且效率很好。使用DataReader
对象除了效率较好之外,因为不用把数据全 部传回,故可以降低网络的负载。
43.在ASP.NET中所有的自定义用户控件都必须继承自?
类
44.在.NET托管代码总我们不必担心内存泄漏,这是因为有了?
垃圾收集器。
45.什么是MVC模式
模型-视图-控制器
就是
View
,视图;
Model
:
DataSet
、
Reader
、对象;
Controller
:
cs
代码。
是典型的平行关系,没有说谁在上谁在下的关系,模型负责业务领域的事情,视图负责显示的事
MVC
最大的好处是将逻辑和页面分离。
46.
能用
foreach
遍历访问的对象的要求
IEnumerable
接口或声明
GetEnumerator
方法的类型。
47.什么是反射?
48.ORM中的延迟加载与直接加载有什么异同?
Lazy Loading
)只在真正需要进行数据操作的时候再进行加载数据,可以减少不必要的开销。
49.简述Func与Action的区别?
是有返回值的委托,
Action
是没有返回值的委托。
50.23种设计模式分别叫什么名称,如何分类?
单例模式
工厂模式
建造者模式
原型模式
工厂方法模式
策略模式
模板方法模式
观察者模式
迭代子模式
责任链模式
命令模式
备忘录模式
状态模式
访问者模式
中介者模式
解释器模式
适配器模式
装饰器模式
代理模式
外观模式
桥接模式
组合模式
享元模式
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/22813.html