在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

VB.NET是怎樣做到的(5、6)

VB.NET是怎樣做到的(5、6)

更新時間:2022-05-02 文章作者:未知 信息來源:網絡 閱讀次數:



VB.net是怎樣做到的(五)——實現接口

VB.net采用的實現接口的語法是VB5發明的Implements,這個實現接口的語法在當今主流語言中獨一無二。比如我有兩個接口:

Interface Interface1
Sub Test()
End Interface

Interface Interface2
Sub Test()
End Interface

這兩個接口有一個完全一樣的成員Test。假設我需要用一個類同時實現兩個接口會怎么樣呢?先想想看,如果是Java,JScrip.NET這樣的語言就只能用一個Test函數實現兩個接口的Test成員。假如兩個Test只是偶然重名,其內容必須要分別實現怎么辦,于是一些解決接口重名的設計出現了……。在VB中,獨特的Implements語句可以讓你想怎么實現接口就怎么實現,比如下面的類Implementation用兩個名字根本不一樣的方法實現了兩個接口。

Public Class Implementation
Implements Interface1, Interface2

Public Sub Hello() Implements Interface1.Test

End Sub

Private Sub Hi() Implements Interface2.Test

End Sub
End Class

也就是說,VB允許用任意名字的函數實現接口中的成員,而且訪問器可以是任意的,比如想用Public還是Private都可以。

C#在處理重名成員上提供了顯式實現(explicit implementation)的語法,其實現上述兩個接口的語法為

public class Class1 : Interface1, Interface2
{
public Class1()
{
}
void Interface1.Test()
{
}

void Interface2.Test()
{
}

}

注意這里,C#只能用接口名.成員名的名字來命名實現方法,而且訪問器只能是private,不能公開顯式實現的方法。

在考察了IL以后,我發現.NET支持隱式實現和顯式實現兩種方式。其中隱式實現只要在類里面放一個與接口成員方法名字一樣的方法即可——這一種VB不支持。而顯式實現則在方法的描述信息里加入:

.override TestApp.Interface1::Test

無論是C#的顯式實現還是VB的Implements語句都是這樣的原理。也就是說.NET提供了換名實現接口成員的功能,但是只有VB將這個自由讓給了用戶,而其他語言還是采用了經典的語法。


VB.NET是怎樣做到的(六)——默認屬性和屬性參數


在原先的VB6里,有一項奇特的功能——默認屬性。在VB6中,對象的名稱可以直接表示該對象的默認屬性。比如TextBox的默認屬性是Text,所以下面的代碼

Text1.Text = "Hello"

就可以簡化為

Text1 = "Hello"

這種簡化給VB帶來了很多麻煩,賦值運算就需要兩個關鍵字——Let和Set,結果屬性過程也需要Let和Set兩種。而且這種特征在后期綁定的時候仍能工作。到了VB.NET,這項功能被大大限制了,現在只有帶參數的屬性才可以作為默認屬性。如

List1.Item(0) = "Hello"

可以簡化為

List1(0) = "Hello"

這種語法讓有默認屬性的對象看起來像是一個數組。那么VB怎么判斷一個屬性是否是默認屬性呢?看下列代碼

Public Class PropTest

Public Property P1(ByVal index As Integer) As String

Get


End Get

Set(ByVal Value As String)


End Set

End Property


Default Public Property P2(ByVal index As Integer) As String

Get


End Get

Set(ByVal Value As String)


End Set

End Property

End Class

P1和P2兩個屬性基本上完全相同,唯一的不同是P2帶有一個Default修飾符。反匯編這個類以后,可以發現兩個屬性完全相同,沒有任何差異。但是PropTest類卻被增加了一個自定義元屬性System.Reflection.DefaultMemberAttribute。這個元屬性指定的成員是InvokeMember所使用默認類型,也就是說后期綁定也可以使用默認屬性。可是我試驗將DefaultMember元屬性手工添加到類型上卻不能達到讓某屬性成為默認屬性的功能。看來這項功能又是VB的一項“語法甜頭”。但是,VB或C#的編譯器對別人生成的類的默認屬性應該只能通過DefaultMemberAttribute來判斷,所以我將一個VB類只用DefaultMemberAttribute指定一個默認方法,不使用Default,然后將它編譯以后給C#用,果然,C#將它識別為一個索引器(indexer)!

既然說到了C#的索引器,我們就順便來研究一下VB和C#屬性方面的不同。剛才的實驗結果是VB的默認屬性在C#中就是索引器。但是VB仍然可以用屬性的語法來訪問默認屬性,而C#只能用數組的語法訪問索引器。更特別的是,VB可以創建不是默認屬性,但是帶有參數的屬性,如上面例子里的P1,而C#則不支持帶參數的屬性,如果將VB編寫的,含有帶參數屬性的類給C#用,C#會提示“屬性不受該語言支持,請用get_XXX和set_XXX的語法訪問”。也就是說,帶參數的屬性是CLR的一項功能,但不符合CLS(通用語言規范),因此就會出現跨語言的障礙。這也更加深了我們對CLS的認識——如果你希望讓你的代碼跨語言工作,請一定要注意符合CLS。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 午夜探花在线观看| 成 年 人 黄 色 大 片大 全| 一区二区xxx| 五月天国产视频| 日本中文字幕亚洲| 孩娇小videos精品| 国产真实老熟女无套内射| 无码aⅴ精品一区二区三区浪潮 | 四虎影院一区二区| 丰满人妻中伦妇伦精品app| 中文av字幕在线观看| 第一区免费在线观看| 无罩大乳的熟妇正在播放| 成人性生交免费看| 人妻熟妇乱又伦精品视频| 一级黄色录像在线观看| 女性女同性aⅴ免费观女性恋| 99精品视频国产| 视频在线观看免费高清| 日韩在线一级片| 日本一区二区黄色| 欧美国产亚洲一区| 日本xxxxxxx免费视频| 成年人午夜视频在线观看| 五十路熟女丰满大屁股| 国产av人人夜夜澡人人爽麻豆| 特级黄色片视频| 91免费国产精品| 青春草国产视频| 国产视频九色蝌蚪| 麻豆av免费在线| 波多野结衣国产精品| 先锋影音男人资源| a级黄色一级片| 少妇一级淫免费播放| 久久久久久久久久一区二区| 视频一区二区视频| 精品视频免费在线播放| 亚洲一区在线不卡| 成年人午夜免费视频| 亚洲乱码国产一区三区| 亚洲天堂av一区二区三区| 亚洲美女性囗交| 成人午夜精品久久久久久久蜜臀| 激情五月婷婷久久| 美女日批免费视频| 成人高清dvd| 中文字幕在线视频一区二区三区| 亚洲精品国产suv一区88| 免费看国产黄色片| 欧美私人情侣网站| 国产欧美精品aaaaaa片| 中文字幕免费高| 四虎1515hh.com| 57pao国产成永久免费视频| 成人性做爰aaa片免费看不忠| 欧美日韩视频免费| 91动漫在线看| 国内少妇毛片视频| 欧美精品久久久久久久自慰| 久久综合亚洲精品| 成人免费a级片| 亚洲五码在线观看视频| 久久久国产精华液999999 | 免费 成 人 黄 色| 日本熟妇人妻xxxx| 欧美三级午夜理伦三级| 久久久999视频| 日韩va在线观看| 浴室偷拍美女洗澡456在线| 色乱码一区二区三区熟女| 超碰成人在线免费观看| 妞干网在线播放| 97xxxxx| 日韩a一级欧美一级| 欧美 日韩 激情| 桥本有菜av在线| 日日摸天天爽天天爽视频| 浴室偷拍美女洗澡456在线| 国产无限制自拍| 超碰在线免费观看97| 免费毛片网站在线观看| 亚洲一二区在线观看| 久久久久免费看黄a片app| 伊人成人免费视频| 久久久国产欧美| 欧美人成在线观看| 91制片厂免费观看| 久久久久久久久久久久久久久国产| av日韩在线看| 国产欧美综合一区| 妞干网这里只有精品| 男生操女生视频在线观看| www.xxx亚洲| 男人日女人bb视频| 日韩免费高清在线| 亚洲最大综合网| 久久久成人精品一区二区三区 | 久久久久亚洲av无码专区喷水| 中文字幕在线视频一区二区三区| 亚洲a级黄色片| www.这里只有精品| 91丝袜超薄交口足| 亚洲中文字幕无码中文字| 人妻无码久久一区二区三区免费| 日韩国产精品毛片| 97中文字幕在线| 免费激情视频在线观看| 欧美日韩怡红院| 青草全福视在线| 任你操这里只有精品| 亚洲一区日韩精品| 五月天激情图片| 精品少妇无遮挡毛片| 麻豆md0077饥渴少妇| 日韩手机在线观看视频| 日本xxxxx18| 高清一区在线观看| 日本福利视频一区| 天堂av免费看| 波多野结衣天堂| 日韩精品在线观看av| 激情视频免费网站| 国产自偷自偷免费一区| 九九久久九九久久| 一级淫片在线观看| 国产一区二区视频免费在线观看| 国产精品国三级国产av| 青青草久久伊人| 日本特黄在线观看| 噜噜噜久久亚洲精品国产品麻豆| 成人免费xxxxx在线视频| 日韩av资源在线| 国产高潮免费视频| 茄子视频成人免费观看| 成人免费a级片| 久久久国产精华液999999 | 丁香啪啪综合成人亚洲| 蜜桃视频一区二区在线观看| 国产91沈先生在线播放| 国产女人18毛片| av动漫在线免费观看| 少妇久久久久久被弄到高潮| 无码人妻aⅴ一区二区三区日本| 无尽裸体动漫2d在线观看| 欧美精品无码一区二区三区| 日韩美女爱爱视频| 热久久精品国产| 蜜臀av免费观看| 97在线免费视频观看| 国产精品少妇在线视频| 午夜视频在线观| 亚洲五码在线观看视频| 黄色一级片网址| 一本色道无码道dvd在线观看| 欧美日韩在线免费播放| 91精产国品一二三产区别沈先生| 男人添女人荫蒂免费视频| 91传媒久久久| 国产欧美123| 久久久久久人妻一区二区三区| 亚洲成人av免费看| 99热亚洲精品| 国产女人18毛片| 色偷偷中文字幕| 中文字幕永久有效| 男女啪啪网站视频| 日韩在线视频在线| 波多野结衣国产精品| 国产精品沙发午睡系列| 国产天堂视频在线观看| 午夜剧场高清版免费观看| 免费日韩视频在线观看| 激情综合在线观看| 欧美成人精品免费| 成人免费毛片在线观看| 亚洲精品国产suv一区88| 1314成人网| 国产高清免费在线| www.亚洲成人网| 欧美交换配乱吟粗大25p| 日本男人操女人| 我看黄色一级片| 国产性生活一级片| 超级碰在线观看| 国产又粗又猛大又黄又爽| avove在线观看| 激情伊人五月天| 精品久久久久久久免费人妻| 成人精品视频一区二区| 国产一级片中文字幕| 神马午夜伦理影院| 免费观看成人在线视频| 18禁免费无码无遮挡不卡网站| 亚洲成色www.777999| 人人妻人人做人人爽| 亚洲男人天堂av在线| 亚洲区成人777777精品| 免费观看成人在线视频| 国产男女免费视频|