浅谈VB.NETImplements语句

VB.NET有很多值得学习的地方,这里我们主要介绍VB.NET Implements语句,包括介绍Test函数等方面。VB.NET采用的实现接口的语法是VB5发明的Implements,这个实现接口的语法在当今主流语言中***。比如我有两个接口:

我们提供的服务有:成都网站建设、成都做网站、微信公众号开发、网站优化、网站认证、祁阳ssl等。为1000多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的祁阳网站制作公司

 
 
 
  1. Interface Interface1
  2. Sub Test()
  3. End Interface
 
 
 
  1. Interface Interface2
  2. Sub Test()
  3. End Interface

这两个接口有一个完全一样的成员Test。假设我需要用一个类同时实现两个接口会怎么样呢?先想想看,如果是Java,JScrip.NET这样的语言就只能用一个Test函数实现两个接口的Test成员。假如两个Test只是偶然重名,其内容必须要分别实现怎么办,于是一些解决接口重名的设计出现了……。VB.NET Implements语句可以让你想怎么实现接口就怎么实现,比如下面的类Implementation用两个名字根本不一样的方法实现了两个接口。

 
 
 
  1. Public Class Implementation
  2. Implements Interface1, Interface2
  3. Public Sub Hello() Implements Interface1.Test
  4. End Sub
  5. Private Sub Hi() Implements Interface2.Test
  6. End Sub
  7. End Class

也就是说,VB允许用任意名字的函数实现接口中的成员,而且访问器可以是任意的,比如想用Public还是Private都可以。C#在处理重名成员上提供了显式实现(explicit implementation)的语法,其实现上述两个接口的语法为

 
 
 
  1. public class Class1 : Interface1, Interface2
  2. {
  3. public Class1{}
  4. void Interface1.Test{}
  5. void Interface2.Test{}
  6. }

注意这里,C#只能用接口名.成员名的名字来命名实现方法,而且访问器只能是private,不能公开显式实现的方法。

在考察了IL以后,我发现.NET支持隐式实现和显式实现两种方式。其中隐式实现只要在类里面放一个与接口成员方法名字一样的方法即可——这一种VB不支持。而显式实现则在方法的描述信息里加入:

.override TestApp.Interface1::Test

无论是C#的显式实现还是VB.NET Implements语句都是这样的原理。也就是说.NET提供了换名实现接口成员的功能,但是只有VB将这个自由让给了用户,而其他语言还是采用了经典的语法。

分享题目:浅谈VB.NETImplements语句
转载源于:http://www.gawzjz.com/qtweb/news25/199725.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联