自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

VB.NET Hashtable用法相關(guān)概念詳解

開(kāi)發(fā) 后端
我們?cè)谶@篇文章中對(duì)VB.NET Hashtable用法做了詳細(xì)的介紹。剛剛接觸這門(mén)語(yǔ)言的朋友可以通過(guò)介紹的內(nèi)容詳細(xì)掌握其中的操作技巧。

大家知道VB語(yǔ)言嗎?它的作用為程序員帶來(lái)了不一樣的體驗(yàn)。在這里首先來(lái)了解一下VB.NET Hashtable用法的相關(guān)概念。在我的程序中她的靚影在各處閃現(xiàn);她是你的過(guò)客還是情人,在我的程序中她是永恒的女主角。說(shuō)到如何充分的利用Hashtable,我會(huì)在我的另一篇文章《解耦利器:Hashtable》中詳細(xì)闡述,這里就介紹一下她是怎樣撒嬌的吧。#t#

大家都知道Hashtable說(shuō)白了就是鍵值對(duì),當(dāng)然她的一些Hash函數(shù)美妙無(wú)語(yǔ),但如果我們使用.NET或Java進(jìn)行開(kāi)發(fā)時(shí)對(duì)于常用的類,jdk中HashCode函數(shù)已經(jīng)重寫(xiě)好了,不用我們勞神,所以大概明白Hashtable的基本概念就可以在程序中盡情的擁抱她了。

廢話少說(shuō),言歸正題。

VB.NET Hashtable用法中最直白的使用方法就是

  1. Dim ht As New Hashtable  
  2. Dim key As String = "___" 
  3. Dim value As String = "___" 
  4. ht.Add(key, value) 

這個(gè)時(shí)候她表現(xiàn)的特別乖,什么小差都沒(méi)開(kāi)。好,下面我們把她包裝一下,女主角是要有些矜持的。

  1. Public Class TestHashtableClass 
    Test
    Hashtable  
  2. Private ht As New Hashtable  
  3. Public Sub setParameter()Sub 
    setParameter(ByRef key As String, 
    ByRef value As Object)  
  4. Me.ht.Add(key, value)  
  5. End Sub  
  6. End Class 

這里很直白,就不解釋了,如果VB.NET Hashtable用法中這樣使用這個(gè)類是不會(huì)有問(wèn)題的

  1. Dim testHashtable As New 
    Test
    Hashtable  
  2. testHashtable.setParameter
    ("key", "value") 

工作的很正常,大小姐依然很乖,:-)下面我們換一種value的傳入方式,不再使用一個(gè)常量,而是使用一個(gè)屬性。我們先創(chuàng)建一個(gè)帶有只讀屬性的類

  1. Public Class TestObjectClass 
    TestObject  
  2. Public ReadOnly Property aaa
    ()Property aaa() As Integer  
  3. Get  
  4. System.Diagnostics.Debug.
    WriteLine("aaa.get")  
  5. Return 10  
  6. End Get  
  7. End Property  
  8. End Class 

在VB.NET Hashtable用法程序中這樣調(diào)用

  1. Dim testHashtable As 
    New Test
    Hashtable  
  2. Dim o As New TestHashtable.
    TestObject  
  3. testHashtable.setParameter
    ("a", o.aaa) 

^_^ 一切正常,關(guān)鍵的時(shí)刻來(lái)臨了,我們的小公主就要撒嬌啦。下面我們改造一下TestObject

  1. Public Class TestObjectClass 
    TestObject  
  2. Public Property aaa()Property 
    aaa() As Integer  
  3. Get  
  4. System.Diagnostics.Debug.WriteLine
    ("aaa.get")  
  5. Return 10  
  6. End Get  
  7. Set(ByVal value As Integer)  
  8. System.Diagnostics.Debug.WriteLine
    ("aaa.set")  
  9. End Set  
  10. End Property  
  11. End Class  

注意這里把只讀屬性變成了可讀寫(xiě)屬性,調(diào)用代碼依然是那三句不變,我們?cè)诘谌屑由弦粋€(gè)斷點(diǎn),OK,F(xiàn)5運(yùn)行,到達(dá)斷點(diǎn)后,我們小心翼翼的F11一步步運(yùn)行,首先執(zhí)行到了TestObject中的屬性Get中,這是預(yù)期的,沒(méi)有問(wèn)題,退出Get后,程序執(zhí)行setParameter中的語(yǔ)句,這也是預(yù)期的,go on,退出setParameter后,再按一下F11,o(∩_∩)o...哈哈,小公主撒嬌啦,她任性的走進(jìn)了TestObject中屬性的Set中!真是不乖,怎么可以到處亂跑呢,這樣你會(huì)無(wú)意踏壞花花草草呀,如果在set中不是一句打印語(yǔ)句,而是一個(gè)終止程序命令,你就惹大禍啦。

如何解決這個(gè)問(wèn)題呢,其實(shí)很簡(jiǎn)單,只要在傳入屬性前,先把屬性的值賦給一個(gè)變量,再把這個(gè)變量傳給VB.NET Hashtable用法就好了。

她在VB.NET中不乖,那她到了C#中會(huì)不會(huì)有所收斂呢。我們把上面的代碼全部用C#改寫(xiě),發(fā)現(xiàn)上面所說(shuō)的情況沒(méi)有發(fā)生,一切正常,set并沒(méi)有被調(diào)用。

如果把上面的兩個(gè)類做成一個(gè)VB.NET Hashtable用法中的類庫(kù),把它加入到一個(gè)解決方案中,在C#中調(diào)用這兩個(gè)類,你會(huì)發(fā)現(xiàn)根本就沒(méi)有辦法直接調(diào)用屬性傳入setParameter,會(huì)出現(xiàn)編譯錯(cuò)誤,要求必須將其先存到一個(gè)變量中才可以,根本就沒(méi)有給她留下撒嬌的機(jī)會(huì)。

這樣看來(lái),如果說(shuō)C#是一位嚴(yán)父,根本不允許撒嬌的存在,那么VB.NET就是一位慈母,她是那么的包容,又是那么的縱容!

責(zé)任編輯:曹凱 來(lái)源: 博客園
相關(guān)推薦

2010-01-19 10:12:39

VB.NET Butt

2010-01-21 10:48:18

VB.NET擴(kuò)展方法

2010-01-12 18:05:38

VB.NET對(duì)象

2010-01-08 14:56:18

VB.NET類定義

2010-01-13 10:15:19

VB.NET Stri

2010-01-19 15:08:18

VB.NET對(duì)象成員

2010-01-12 17:21:29

VB.NET對(duì)象

2010-01-12 18:28:28

VB.NET共享變量

2010-01-13 18:17:00

VB.NET通信程序

2010-01-14 17:27:17

VB.NET坐標(biāo)系統(tǒng)

2010-01-11 15:01:55

VB.NET冒泡排序

2010-01-19 17:26:37

VB.NET創(chuàng)建過(guò)程

2010-01-18 19:29:31

VB.NET多維數(shù)組

2010-01-07 14:52:41

VB.NET運(yùn)算符

2010-01-07 14:10:41

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

2010-01-21 15:47:41

VB.NET變量生存周VB.net

2010-01-20 18:22:37

VB.NET泛型類型

2010-01-07 10:28:04

VB.NET實(shí)現(xiàn)接口

2010-01-12 18:35:43

VB.NET Stru

2010-01-21 17:34:48

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

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