新聞中心
VB.NET有很多值得學(xué)習(xí)的地方,這里我們主要介紹VB.NET Implements語(yǔ)句,包括介紹Test函數(shù)等方面。VB.NET采用的實(shí)現(xiàn)接口的語(yǔ)法是VB5發(fā)明的Implements,這個(gè)實(shí)現(xiàn)接口的語(yǔ)法在當(dāng)今主流語(yǔ)言中***。比如我有兩個(gè)接口:

我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、成都做網(wǎng)站、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、祁陽(yáng)ssl等。為1000多家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢(xún)和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的祁陽(yáng)網(wǎng)站制作公司
- Interface Interface1
- Sub Test()
- End Interface
- Interface Interface2
- Sub Test()
- End Interface
這兩個(gè)接口有一個(gè)完全一樣的成員Test。假設(shè)我需要用一個(gè)類(lèi)同時(shí)實(shí)現(xiàn)兩個(gè)接口會(huì)怎么樣呢?先想想看,如果是Java,JScrip.NET這樣的語(yǔ)言就只能用一個(gè)Test函數(shù)實(shí)現(xiàn)兩個(gè)接口的Test成員。假如兩個(gè)Test只是偶然重名,其內(nèi)容必須要分別實(shí)現(xiàn)怎么辦,于是一些解決接口重名的設(shè)計(jì)出現(xiàn)了……。VB.NET Implements語(yǔ)句可以讓你想怎么實(shí)現(xiàn)接口就怎么實(shí)現(xiàn),比如下面的類(lèi)Implementation用兩個(gè)名字根本不一樣的方法實(shí)現(xiàn)了兩個(gè)接口。
- Public Class Implementation
- Implements Interface1, Interface2
- Public Sub Hello() Implements Interface1.Test
- End Sub
- Private Sub Hi() Implements Interface2.Test
- End Sub
- End Class
也就是說(shuō),VB允許用任意名字的函數(shù)實(shí)現(xiàn)接口中的成員,而且訪問(wèn)器可以是任意的,比如想用Public還是Private都可以。C#在處理重名成員上提供了顯式實(shí)現(xiàn)(explicit implementation)的語(yǔ)法,其實(shí)現(xiàn)上述兩個(gè)接口的語(yǔ)法為
- public class Class1 : Interface1, Interface2
- {
- public Class1{}
- void Interface1.Test{}
- void Interface2.Test{}
- }
注意這里,C#只能用接口名.成員名的名字來(lái)命名實(shí)現(xiàn)方法,而且訪問(wèn)器只能是private,不能公開(kāi)顯式實(shí)現(xiàn)的方法。
在考察了IL以后,我發(fā)現(xiàn).NET支持隱式實(shí)現(xiàn)和顯式實(shí)現(xiàn)兩種方式。其中隱式實(shí)現(xiàn)只要在類(lèi)里面放一個(gè)與接口成員方法名字一樣的方法即可——這一種VB不支持。而顯式實(shí)現(xiàn)則在方法的描述信息里加入:
.override TestApp.Interface1::Test
無(wú)論是C#的顯式實(shí)現(xiàn)還是VB.NET Implements語(yǔ)句都是這樣的原理。也就是說(shuō).NET提供了換名實(shí)現(xiàn)接口成員的功能,但是只有VB將這個(gè)自由讓給了用戶,而其他語(yǔ)言還是采用了經(jīng)典的語(yǔ)法。
網(wǎng)頁(yè)題目:淺談VB.NETImplements語(yǔ)句
當(dāng)前地址:http://www.5511xx.com/article/cdhhiog.html


咨詢(xún)
建站咨詢(xún)
