![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c#
m0_46195627
这个作者很懒,什么都没留下…
展开
-
您在什么情况下会用到虚方法?它与接口有什么不同?
79.您在什么情况下会用到虚方法?它与接口有什么不同? a.子类重新定义父类的某一个方法时,必须把父类的方法定义为 virtual 在定义接口中不能有方法体,虚方法可以。实现时,子类可以不重新定义虚方法,但如果一个类继承接口,那必须实现这个接口。 ...原创 2021-01-11 08:48:12 · 115 阅读 · 0 评论 -
abstract class和interface有什么区别?
78.abstract class和interface有什么区别? 相同点: a.都不能被直接实例化,都可以通过继承实现其抽象方法。 不同点: b.接口支持多继承;抽象类不能实现多继承。 c.接口只能定义行为;抽象类既可以定义行为,还可能提供实现。 d.接口可以用于支持回调(CallBack);抽象类不能实现回调,因为继承不支持。 e.接口只包含方法(Method)、属性(Property)、索引器(Index)、事件(Event)的签名,但不能定义字段和包含实现的方法; f.抽象类可以定义字段、属性、包含原创 2021-01-11 08:47:38 · 78 阅读 · 0 评论 -
C#中的接口和类有什么异同?
77.C#中的接口和类有什么异同? 不同点: a.不能直接实例化接口。 b.接口不包含方法的实现。 c.接口可以多继承,类只能单继承。 d.类定义可在不同的源文件之间进行拆分 相同点: e.接口、类和结构都可以从多个接口继承。 f.接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。 g.接口和类都可以包含事件、索引器、方法和属性 ...原创 2021-01-11 08:47:01 · 127 阅读 · 0 评论 -
在.net中类(class)与结构 (struct)的异同?
76.在.net中类(class)与结构 (struct)的异同? a.Class可以被实例化,属于引用类型,是分配在内存的堆上的。类是引用传递的 b.Struct 属于值类型,是分配在内存的栈上的。结构体是复制传递的。加分的回答:Int32、Boolean 等都属于结构体。 ...原创 2021-01-11 08:46:24 · 98 阅读 · 0 评论 -
请叙const与readonly的区别
75.请叙const与readonly的区别 a.const 关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值不能被修改。常数声明引入给定类型的一个或多个常数。 const 数据成员的声明式必须包含初值,且初值必须是一个常量表达式。因为它是在编译时就需要完全评估。 const 成员可以使用另一个 const 成员来初始化,前提是两者之间没有循环依赖。 b.readonly 在运行期评估赋值,使我们得以在确保“只读访问”的前提下,把 object 的初始化动作推迟到运行期进行。 c.readonl原创 2021-01-11 08:44:44 · 71 阅读 · 0 评论 -
.是否可以从一个 static方法内部发出对非 static方法的调用?
74.是否可以从一个 static方法内部发出对非 static方法的调用? a.不可以 b.因为非 static 方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方 法调用,而 static 方法调用时不需要创建对象,可以直接调用 也就是说,当一个 static 方法被调用时,可能还没有创建任何实例对象,如果从一个 static 方法中发出对非 static 方法的调用,那个非 static 方法是关 联到哪个对象上的呢?这个逻辑无法成立,所以,一个 static 方法内部不能发出对非原创 2021-01-11 08:44:13 · 106 阅读 · 1 评论 -
using键字有什么用?什么是IDisposable?
71.using键字有什么用?什么是IDisposable? a.using 可以声明 namespace 的引入,还可以实现非托管资源的释放,实现了 IDisposiable 的类在 using 中创建 b.using 结束后会自动调用该对象的 Dispose 方法,释放资源。 c.加分的补充回答:using 其实等价于 try……finally, 用起来更方便 72.GC是什么?为什么要有 GC? a.GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。 b.GC只能处理托管内存资源原创 2021-01-11 08:43:28 · 96 阅读 · 0 评论 -
70.new关键字用法?
70.new关键字用法? a.new 运算符 用于创建对象和调用构造函数。 b.new 修饰符 用于向基类成员隐藏继承成员。 c.new 约束 用于在泛型声明中约束可能用作类型参数的参数的类型。原创 2021-01-11 08:42:56 · 71 阅读 · 0 评论 -
2021-01-11
69.try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行? a.会执行,在 return 前执行 扩展:读取数据库中数据的条数的程序,如果 C#设计的是先执行 cmd.Dispose()再执行 return 就会出现 return 执行失败了,因为 cmd 已经 Dispose 了。 如图: ...原创 2021-01-11 08:41:33 · 58 阅读 · 0 评论 -
string str= null与 string str=““说明其中的区别?
68.int、DateTime、string是否可以为 null? a.int、DateTime 不能 b.因为其为 Struct 类型,而结构属于值类型,值类型不能为 null,只有引用类型才能被赋值 null。 string 可以为 null原创 2021-01-11 08:40:31 · 144 阅读 · 0 评论 -
62.什么是强类型,什么是弱类型?哪种更好些?为什么?
62.什么是强类型,什么是弱类型?哪种更好些?为什么? a.C#中int i=3; i=“a”;不可以。JavaScript中 var i=3; i=3; i=“a”;可以。 b.强类型是在编译的时候就确定类型的数据,在执行时类型不能更改,而弱类型在执行的时候才会确定类型。 c.没有好不好,二者各有好处,强类型安全,因为它事先已经确定好了,而且效率高。弱类型更灵活,但是效率低,而且出错概率高 d.一般用于编译型编程语言,如 c++,java,c#,pascal 等,弱类型相比而言不安全,在运行的时候容易出现原创 2021-01-08 13:18:43 · 62 阅读 · 0 评论 -
61.堆和栈的区别?
61.堆和栈的区别? a.栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义;局部值类型变量、值类型 参数等都在栈内存中。 b.堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小。 ...原创 2021-01-08 13:18:11 · 53 阅读 · 0 评论 -
.什么是装箱(boxing)和拆箱 (unboxing)?
60.什么是装箱(boxing)和拆箱 (unboxing)? a.装箱:从值类型接口转换到引用类型。 b.拆箱:从引用类型转换到值类型 如图:原创 2021-01-08 13:17:38 · 299 阅读 · 0 评论 -
59.值类型和引用类型的区别?
59.值类型和引用类型的区别? a.将一个值类型变量赋给另一个值类型变量时,将复制包含的值。引用类型变量的赋值只复制对对象的引用, 而不复制对象本身 b. 值类型不可能派生出新的类型:所有的值类型均隐式派生自 System.ValueType。但与引用类型相同的是,结 构也可以实现接口 c.值类型不可能包含 null 值:然而,可空类型功能允许将 null 赋给值类型 d.每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值 ...原创 2021-01-08 13:17:01 · 59 阅读 · 0 评论 -
属性和public 字段的区别是什么?调用 set 方法为一个属性设值,然后用 get 方法读取出来的值一定是 set 进去的值吗?
58.属性和public 字段的区别是什么?调用 set 方法为一个属性设值,然后用 get 方法读取出来的值一定是 set 进去的值吗? a.属性可以对设值、取值的过程进行非法值控制,比如年龄禁止设值负数,而字段则不能进行这样的设置 b.虽然 一般情况下 get 读取的值就是 set 设置的值,但是可以让 get 读取的值不是 set 设置的值的。极端的例子。Public Age{get{return100;}set{}} c.扩展::用 reflector 反编译可以看出,属性内部本质上就是 set_*原创 2021-01-08 13:16:31 · 90 阅读 · 0 评论 -
DataReader和DataSet的异同(简略版)?
57.DataReader和DataSet的异同(简略版)? a. DataReader 使用时始终占用 SqlConnection,在线操作数据库 每次只在内存中加载一条数据,所以占用的内存是很小的 是只进的、 只读的 b. DataSet 则是将数据一次性加载在内存中.抛弃数据库连接…读取完毕即放弃数据库连接(非连 接模式) c. DataSet 将数据全部加载在内存中.所以比较消耗内存…但是确比 DataReader 要灵活…可以动 态的添加行,列,数据.对数据库进行 回传更新操作(动态操作读入到内存原创 2021-01-08 13:15:58 · 81 阅读 · 0 评论 -
.ADO.NET中的五个主要对象
56.ADO.NET中的五个主要对象 a.Connection:主要是开启程序和数据库之间的连接。没有利用连接对象将数据库打开,是无法从数据库中取得 数据的。Close 和 Dispose 的区别,Close 以后还可以 Open,Dispose 以后则不能再用。 b.Command:主要可以用来对数据库发出一些指令,例如可以对数据库下达查询、新增、修改、删除数据等指令, 以及调用存在数据库中的存储过程等。这个对象是架构在 Connection 对象上,也就是 Command 对象是透过连 接到数据源 c.原创 2021-01-08 13:15:26 · 99 阅读 · 0 评论 -
.简述 private、protected、public、internal 修饰符的访问权限
55.简述 private、protected、public、internal 修饰符的访问权限 a.private: 私有成员, 在类的内部才可以访问 b.protected: 保护成员,该类内部和继承类中可以访问 c.public: 公共成员,完全公开,没有访问限制 d.internal: 当前程序集内可以访问 ...原创 2021-01-08 13:14:39 · 153 阅读 · 0 评论 -
54.什么叫应用程序域(AppDomain)?
54.什么叫应用程序域(AppDomain)? a. 一种边界,它由公共语言运行库围绕同一应用程序范围内创建的对象建立(即,从应用程序入口点开始,沿着对象激活的序列的任何位置) b. 应用程序域有助于将在一个应用程序中创建的对象与在其他应用程序中创建的对象隔离,以使运行时行为可以预知。 c. 在一个单独的进程中可以存在多个应用程序域。应用程序域可以理解为一种轻量级进程。起到安全的作用,占用资源小。 ...原创 2021-01-08 13:14:06 · 87 阅读 · 0 评论 -
CTS、CLS、CLR分别作何解释?
53.CTS、CLS、CLR分别作何解释? a.CTS:通用类型系统 (commontype system)。一种确定公共语言运行库如何定义、使用和管理类型的规范。即Int32、Int16→int、String→string、Boolean→bool b.CLS:CLS 公共语言规范(CommonLanguage Specification)。一种确定公共语言运行库如何定义、使用和管理类型的规范。即不同语言语法的不同。 c.CLR:公共语言运行库(CommonLanguage RuntimeCLR),.NE原创 2021-01-08 13:13:21 · 138 阅读 · 0 评论