NET基础知识汇总

作者:萧瑟 码海拾贝 2018-04-03 19:47
博主最近很忙,本文暂停更新!

前言

写这篇文章的目的是什么呢?主要是想分享一下DOT.NET的一些知识,希望有人能用的到。

目录-更新

  1. 2018年04月11日
  2. 2018年04月09日
  3. 2018年04月03日

传入某个属性的SET方法的隐含参数的名称是什么?

value,它的类型和属性所声明的类型相同。

C#支持多重继承吗?

不支持。可以用接口来实现。

C#提供一个默认的无参构造函数,当我实现了另外一个有一个参数的构造函数时,还想保留这个无参数的构造函数。这样我应该写几个构造函数?

两个,一旦你实现了一个构造函数,C#就不会再提供默认的构造函数了,所以需要手动实现那个无参构造函数。

重载和覆写有什么区别?

重载提供了对一个方法签名的不同参数调用的实现。覆写提供了子类中改变父类方法行为的实现。

简述 private、 protected、 public、 internal 修饰符的访问权限

private : 私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
public : 公共成员,完全公开,没有访问限制。
internal: 在同一命名空间内可以访问。

C#中的委托是什么?事件是不是一种委托?

委托可以把一个方法作为参数代入另一个方法。
委托可以理解为指向一个函数的引用。
事件是,是一种特殊的委托

c#中退出WinForm程序包括有很多方法

this.Close(); 
Application.Exit();
Application.ExitThread();
System.Environment.Exit(0); 
...

1.this.Close(); 只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出;
2.Application.Exit(); 强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出;
3.Application.ExitThread(); 强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题;
4.System.Environment.Exit(0); 这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。

 

结构与联合有和区别?

1. 结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合中只存放了一个被选中的成员(所有成员共用一块地址空间), 而结构的所有成员都存在(不同成员的存放地址不同)。
2. 对于联合的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构的不同成员赋值是互不影响的。

关联、聚合(Aggregation)以及组合(Composition)的区别?

涉及到UML中的一些概念:关联是表示两个类的一般性联系,比如“学生”和“老师”就是一种关联关系;聚合表示has-a的关系,是一种相对松散的关系,聚合类不需要对被聚合类负责。
从实现的角度讲,聚合可以表示为:

class A {...} class B { A* a; .....}

而组合表示contains-a的关系,关联性强于聚合:组合类与被组合类有相同的生命周期,组合类要对被组合类负责,采用实心的菱形表示组合关系。 实现的形式是:

class A{...} class B{ A a; ...}

面向对象的三个基本特征,并简单叙述之?

1)封装:将客观事物抽象成类,每个类对自身的数据和方法实行protection(private, protected,public)
2)继承:广义的继承有三种实现形式:实现继承(指使用基类的属性和方法而无需额外编码的能力)、可视继承(子窗体使用父窗体的外观和实现代码)、接口继承(仅使用属性和方法,实现滞后到子类实现)。前两种(类继承)和后一种(对象组合=>接口继承以及纯虚函数)构成了功能复用的两种方式。
3)多态:是将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。

重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?

重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。
重写:是指子类重新定义复类虚函数的方法。
从实现原理上来说:
重载:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。
如,有两个同名函数:function func(p:integer):integer;和function func(p:string):integer;。
那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。
对于这两个函数的调用,在编译器间就已经确定了,是静态的。也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关!
重写:和多态真正相关。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚绑定)。

多态的作用?

主要是两点:
1) 隐藏实现细节,使得代码能够模块化;扩展代码模块,实现代码重用;
2)接口重用:为了类在继承和派生的时候,保证使用家族中任一类的实例的某一属性时的正确调用。

ADO与ADO.net的相同与不同?

除了“能够让应用程序处理存储于DBMS 中的数据“这一基本相似点外,两者没有太多共同之处。但是Ado使用OLE DB 接口并基于微软的COM 技术,而ADO.NET 拥有自己的ADO.NET 接口并且基于微软的.NET 体系架构。众所周知.NET 体系不同于COM 体系,ADO.NET 接口也就完全不同于ADO和OLE DB 接口,这也就是说ADO.NET 和ADO是两种数据访问方式。ADO.net 提供对XML 的支持。

文章标签:CodeNET
版权声明:本文发布于 青衫慧博客 | 百度已收录;
本文链接:https://qsh5.cn/post-12.html
站长声明:

评论

  • 又是一个技术咖
    品牌馆3个月前 (05-13)
    @品牌馆:小弟不才,菜鸟一个,感谢品牌馆来访。
    萧瑟 3个月前 (05-13)
  • 换个友情链接咋样?
    叶九秋5个月前 (04-04)
    @叶九秋:贵站友链是?
    萧瑟 5个月前 (04-04)

允许邮件通知