NET基础知识汇总

2018年4月3日19:47:03 6
博主最近很忙,本文暂停更新!

前言

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

2018年04月11日

  1. 传入某个属性的SET方法的隐含参数的名称是什么?
    value,它的类型和属性所声明的类型相同。
  2. C#支持多重继承吗?
    不支持。可以用接口来实现。
  3. C#提供一个默认的无参构造函数,当我实现了另外一个有一个参数的构造函数时,还想保留这个无参数的构造函数。这样我应该写几个构造函数?
    两个,一旦你实现了一个构造函数,C#就不会再提供默认的构造函数了,所以需要手动实现那个无参构造函数。
  4. 重载和覆写有什么区别?
    重载提供了对一个方法签名的不同参数调用的实现。覆写提供了子类中改变父类方法行为的实现。

2018年04月09日

  1. 简述 private、 protected、 public、 internal 修饰符的访问权限
    private : 私有成员, 在类的内部才可以访问。
    protected : 保护成员,该类内部和继承类中可以访问。
    public : 公共成员,完全公开,没有访问限制。
    internal: 在同一命名空间内可以访问。
  2. C#中的委托是什么?事件是不是一种委托?
    委托可以把一个方法作为参数代入另一个方法。
    委托可以理解为指向一个函数的引用。
    事件是,是一种特殊的委托。
  3. c#中退出WinForm程序包括有很多方法
    this.Close(); 
    Application.Exit();
    Application.ExitThread();
    System.Environment.Exit(0); 
    ...

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

2018年04月03日

  • 结构与联合有和区别?
    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 的支持。
weinxin
微信公众号
博客微信公众号,欢迎关注。
广告也精彩

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:6   其中:访客  3   博主  3

    • avatar 叶九秋 0

      换个友情链接咋样?

        • avatar 萧瑟 博主

          @叶九秋 贵站友链是?

        • avatar 品牌馆 1

          又是一个技术咖

            • avatar 萧瑟 博主

              @品牌馆 小弟不才,菜鸟一个,感谢品牌馆来访。

            • avatar woaiwu福利吧 0

              看见代码就是一件头疼的事情

                • avatar 萧瑟 博主

                  @woaiwu福利吧 如果对它有兴趣,应该就没事。