成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

簡單概括VB.NET默認屬性

開發 后端
這里介紹VB.NET默認屬性,VB或C#的編譯器對別人生成的類的默認屬性應該只能通過 DefaultMemberAttribute來判斷,所以我將一個VB類只用DefaultMemberAttribute指定一個默認方法。

在向大家詳細介紹VB.NET默認屬性之前,首先讓大家了解下TextBox的默認屬性是Text,然后全面介紹VB.NET默認屬性。在原先的VB6里,有一項奇特的功能——默認屬性。在VB6中,對象的名稱可以直接表示該對象的默認屬性。比如TextBox的默認屬性是Text,所以下面的代碼

  1. Text1.Text = "Hello" 

就可以簡化為

  1. Text1 = "Hello" 

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

  1. List1.Item(0) = "Hello" 

可以簡化為

  1. List1(0) = "Hello" 

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

  1. Public Class PropTest  
  2. Public Property P1(ByVal index As Integer) As String  
  3. Get  
  4.  
  5. End Get  
  6. Set(ByVal Value As String)  
  7.  
  8. End Set  
  9. End Property  
  10.  
  11. Default Public Property P2(ByVal index As Integer) As String  
  12. Get  
  13.  
  14. End Get  
  15. Set(ByVal Value As String)  
  16.  
  17. End Set  
  18. End Property  
  19. 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.NET默認屬性在C#中就是索引器。但是VB仍然可以用屬性的語法來訪問默認屬性,而C#只能用數組的語法訪問索引器。更特別的是,VB可以創建不是默認屬性,但是帶有參數的屬性,如上面例子里的P1,而C# 則不支持帶參數的屬性,如果將VB編寫的,含有帶參數屬性的類給C#用,C#會提示“屬性不受該語言支持,請用get_XXX和set_XXX的語法訪問”。也就是說,帶參數的屬性是CLR的一項功能,但不符合CLS(通用語言規范),因此就會出現跨語言的障礙。這也更加深了我們對CLS的認識——如果你希望讓你的代碼跨語言工作,請一定要注意符合CLS。

【編輯推薦】

  1. 詳細分析VB.NET WithEvents
  2. 淺析VB.NET局部靜態變量
  3. 原理分析VB.NET開發控件
  4. 自己動手用代碼實現VB.NET ListView加載數據
  5. 詳細介紹VB.NET MyClass
責任編輯:佚名 來源: CSDN
相關推薦

2009-10-14 13:15:09

VB.NET數據綁定

2009-11-02 09:21:04

VB.NET文件系統

2009-10-14 14:04:29

VB.NET創建Web

2009-10-26 15:57:07

VB.NET使用Ora

2009-10-13 14:50:59

VB.NET Envi

2009-10-30 10:19:43

VB.NET OBEX

2009-10-15 17:50:48

VB.NET Spli

2009-10-14 10:19:57

VB.NET Doma

2009-10-13 09:24:57

VB.NET Dock

2009-10-20 10:23:08

VB.NET多線程編程

2009-11-03 10:00:20

VB.NET New方

2009-10-14 15:34:29

VB.NET窗體編程模

2009-11-03 10:51:33

VB.NET共享

2009-10-23 14:06:07

VB.NET類對象

2009-10-14 16:46:25

VB.NET OnSt

2009-10-27 11:32:42

VB.NET Disp

2009-10-21 10:05:30

VB.NET運行環境

2010-01-18 11:20:13

VB.NET默認屬性

2009-11-02 17:49:05

VB.NET抽象類

2009-10-29 16:23:42

VB.NET實現IEn
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久久久国产 | 欧美成人一区二免费视频软件 | 毛片免费看 | 蜜桃精品噜噜噜成人av | 久久久免费 | 精品久久一 | 国产高清在线精品一区二区三区 | 精品国产女人 | 日韩成人在线播放 | 九九热精品视频 | 91精品国产综合久久小仙女图片 | 久久精品视频在线免费观看 | 国产超碰人人爽人人做人人爱 | 精品亚洲一区二区三区四区五区 | 精品国产欧美一区二区三区成人 | 久久国产婷婷国产香蕉 | 亚洲一区在线播放 | 中文字幕国产 | 中文字幕乱码一区二区三区 | 视频一区二区在线观看 | 一区在线观看 | 国产一区影院 | 国产精品a久久久久 | 亚洲免费毛片 | 久久精品亚洲 | 777zyz色资源站在线观看 | 九九伦理片 | h片免费看| 欧美www在线观看 | 日本 欧美 三级 高清 视频 | 午夜影院污 | 色网在线播放 | 成人日b视频| 亚洲视频中文字幕 | www.亚洲视频.com | 亚洲国产精品久久久 | 欧美午夜一区 | 拍真实国产伦偷精品 | 日日骚网 | 久久精品视频91 | 中文字幕在线观看 |