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

VB.NET類(lèi)型提升失效問(wèn)題總結(jié)

開(kāi)發(fā) 后端
VB.NET類(lèi)型提升之后,可以實(shí)現(xiàn)限定字符串而不需要包括模塊名稱(chēng)。不過(guò),在進(jìn)行提升的過(guò)程中通常會(huì)出現(xiàn)失效的狀態(tài),在這里就對(duì)此進(jìn)行了一個(gè)詳細(xì)的介紹。

VB.NET是一款運(yùn)行機(jī)制和Java類(lèi)似的編程語(yǔ)言。其具有面向?qū)ο筇匦裕軌蛑С执a托管,而且界面簡(jiǎn)單,結(jié)構(gòu)穩(wěn)定,為開(kāi)發(fā)人員帶來(lái)了極大的好處。在這里我們會(huì)通過(guò)對(duì)VB.NET類(lèi)型提升的一些相關(guān)問(wèn)題的解疑,來(lái)對(duì)這門(mén)語(yǔ)言進(jìn)行深入的研究。

在模塊中聲明編程元素時(shí),VB.NET會(huì)將其范圍提升到包含該模塊的命名空間。這稱(chēng)為VB.NET類(lèi)型提升。

下面的示例演示某個(gè)模塊和該模塊的兩個(gè)成員的主干定義。

  1. Namespace projNamespace  
  2. Module projModule  
  3. Public Enum basicEnum As Integer  
  4. one = 1 
  5. two = 2 
  6. End Enum  
  7. Public Class innerClass  
  8. Public Sub numberSub(ByVal firstArg As Integer)  
  9. End Sub  
  10. End Class  
  11. End Module  
  12. End Namespace 

在 projModule 中的模塊級(jí)別上聲明的編程元素將被提升到 projNamespace。在前面的示例中,提升了 basicEnum 和 innerClass,但是沒(méi)有提升 numberSub,因?yàn)樗皇窃谀K級(jí)別上聲明的。

VB.NET類(lèi)型提升的結(jié)果

類(lèi)型提升的結(jié)果是一個(gè)限定字符串不需要包括模塊名稱(chēng)。下面的示例對(duì)前面示例中的過(guò)程發(fā)出兩個(gè)調(diào)用。

  1. Sub usePromotion()  
  2. projNamespace.projModule.innerClass.numberSub
    (projNamespace.projModule.basicEnum.one)  
  3. projNamespace.innerClass.numberSub(projNamespace.basicEnum.two)  
  4. End Sub 

在前面的示例中,***個(gè)調(diào)用使用完全限定字符串。但由于進(jìn)行了類(lèi)型提升,因此這不是必需的。第二個(gè)調(diào)用也訪問(wèn)模塊的成員,但在限定字符串中不包括 projModule。

VB.NET類(lèi)型提升的失效

如果命名空間中的成員與某個(gè)模塊成員同名,則對(duì)該模塊成員的類(lèi)型提升將會(huì)失效。下面的示例演示同一命名空間中枚舉和模塊的主干定義。

  1. Namespace thisNamespace  
  2. Public Enum abc  
  3. first = 1 
  4. second  
  5. End Enum  
  6. Module thisModule  
  7. Public Class abc  
  8. Public Sub abcSub()  
  9. End Sub  
  10. End Class  
  11. Public Class xyz  
  12. Public Sub xyzSub()  
  13. End Sub  
  14. End Class  
  15. End Module  
  16. End Namespace 

在前面的示例中,Visual Basic 無(wú)法將類(lèi) abc 提升到 thisNameSpace,因?yàn)樵诿臻g級(jí)別上已存在同名的枚舉。若要訪問(wèn) abcSub,必須使用完全限定字符串 thisNamespace.thisModule.abc.abcSub。但是,仍會(huì)提升 xyz 類(lèi),您可以使用較短的限定字符串 thisNamespace.xyz.xyzSub 來(lái)訪問(wèn) xyzSub。

分部VB.NET類(lèi)型提升的失效

如果模塊內(nèi)的類(lèi)或結(jié)構(gòu)使用分部 (Visual Basic) 關(guān)鍵字,則對(duì)該類(lèi)或結(jié)構(gòu)的類(lèi)型提升會(huì)自動(dòng)失效,無(wú)論命名空間是否具有同名的成員。模塊中的其他元素仍然符合類(lèi)型提升的條件。

結(jié)果。 分部定義的類(lèi)型提升失效可能導(dǎo)致意外的結(jié)果,甚至導(dǎo)致編譯器錯(cuò)誤。下面的示例演示類(lèi)的主干分部定義,其中一個(gè)定義位于模塊內(nèi)。

  1. Namespace sampleNamespace  
  2. Public Partial Class sampleClass  
  3. Public Sub sub1()  
  4. End Sub  
  5. End Class  
  6. Module sampleModule  
  7. Public Partial Class sampleClass  
  8. Public Sub sub2()  
  9. End Sub  
  10. End Class  
  11. End Module  
  12. End Namespace 

在前面的示例中,開(kāi)發(fā)人員可能期望編譯器合并 sampleClass 的兩個(gè)分部定義。但是,編譯器不考慮 sampleModule 內(nèi)分部定義的提升。因此,它嘗試編譯兩個(gè)名稱(chēng)均為 sampleClass 但具有不同限定路徑的不同類(lèi)。#t#

只有在兩個(gè)分部定義的完全限定路徑相同時(shí),編譯器才會(huì)對(duì)這兩個(gè)分部定義進(jìn)行合并。

建議

下面的建議提供了良好的編程做法。

***名稱(chēng)。 當(dāng)您可以完全控制編程元素的命名時(shí),在所有位置使用***名稱(chēng)始終是一個(gè)好辦法。相同的名稱(chēng)需要額外的限定,并可能使代碼難以閱讀,還可能導(dǎo)致難以發(fā)現(xiàn)的錯(cuò)誤和意外的結(jié)果。

完全限定。 當(dāng)您在同一命名空間中使用模塊和其他元素時(shí),最安全的方法是對(duì)所有編程元素始終使用完全限定。如果某個(gè)模塊成員的VB.NET類(lèi)型提升失效,而您沒(méi)有完全限定該成員,則無(wú)意中可能會(huì)訪問(wèn)另一個(gè)編程元素。

責(zé)任編輯:曹凱 來(lái)源: wewill.cn
相關(guān)推薦

2009-10-27 14:32:45

VB.NET類(lèi)型級(jí)命名

2009-11-10 16:37:48

VB.NET ANY

2010-01-07 14:10:41

VB.NET數(shù)據(jù)類(lèi)型

2009-11-10 13:08:13

VB.NET編程技巧

2009-11-02 13:14:18

VB.NET函數(shù)

2010-01-20 17:54:13

VB.NET特殊字符

2010-01-12 16:39:26

VB.NET數(shù)據(jù)綁定

2009-10-28 09:21:19

VB.NET技術(shù)

2009-11-03 10:51:33

VB.NET共享

2010-01-15 10:47:15

VB.NET命名空間

2009-10-13 14:38:10

VB.NET訪問(wèn)類(lèi)型

2009-10-27 09:45:03

VB.NET數(shù)組

2009-10-09 17:40:38

VB.Net問(wèn)題集

2010-01-12 18:00:50

VB.NET界面

2010-01-21 14:49:44

VB.NET操作Wor

2009-11-10 15:30:46

VB.NET編程原則

2009-10-15 17:57:33

VB.NET List

2009-10-26 16:53:00

VB.NET常用代碼

2009-10-23 09:26:09

VB.NET多線程

2009-10-15 13:06:12

VB.NET Shar
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲一区二区三区 | 一区二区三区中文 | 91久久精品一区二区二区 | 成年人精品视频在线观看 | 欧美日韩亚洲一区 | 国产精品2区| 久久出精品 | 免费在线观看av的网站 | 日韩二三区 | 麻豆久久久久久久久久 | 久久久青草婷婷精品综合日韩 | 免费一级网站 | www狠狠干 | 国产综合精品一区二区三区 | 玖玖视频国产 | 国产久| 91天堂 | 91精品国产91久久久久久密臀 | 欧美在线一区二区三区 | 久久久久久国模大尺度人体 | 精品国产免费一区二区三区演员表 | 欧美精品91 | 中文字幕一区二区三区四区五区 | 精品国产欧美 | 午夜在线小视频 | 特级丰满少妇一级aaaa爱毛片 | 综合久久久 | 国产精品不卡一区 | 高清黄色毛片 | 日日欧美 | 色久伊人 | 一区二区三区国产视频 | 亚洲视频一区二区三区 | 精品一区二区视频 | 羞羞在线视频 | 一区久久 | 精品久久久久久亚洲精品 | 高清视频一区二区三区 | 99久久精品国产一区二区三区 | 麻豆久久精品 | 国产一区中文字幕 |