VB.NETHashtable用法相关概念详解

大家知道VB语言吗?它的作用为程序员带来了不一样的体验。在这里首先来了解一下VB.NET Hashtable用法的相关概念。在我的程序中她的靓影在各处闪现;她是你的过客还是情人,在我的程序中她是永恒的女主角。说到如何充分的利用Hashtable,我会在我的另一篇文章《解耦利器:Hashtable》中详细阐述,这里就介绍一下她是怎样撒娇的吧。#t#

创新互联是一家专注于成都网站制作、网站建设与策划设计,新建网站建设哪家好?创新互联做网站,专注于网站建设10多年,网设计领域的专业建站公司;建站业务涵盖:新建等地区。新建做网站价格咨询:028-86922220

大家都知道Hashtable说白了就是键值对,当然她的一些Hash函数美妙无语,但如果我们使用.NET或Java进行开发时对于常用的类,jdk中HashCode函数已经重写好了,不用我们劳神,所以大概明白Hashtable的基本概念就可以在程序中尽情的拥抱她了。

废话少说,言归正题。

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

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

这个时候她表现的特别乖,什么小差都没开。好,下面我们把她包装一下,女主角是要有些矜持的。

 
 
 
  1. Public Class TestHashtableClass 
    TestHashtable
  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用法中这样使用这个类是不会有问题的

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

工作的很正常,大小姐依然很乖,:-)下面我们换一种value的传入方式,不再使用一个常量,而是使用一个属性。我们先创建一个带有只读属性的类

 
 
 
  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用法程序中这样调用

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

^_^ 一切正常,关键的时刻来临了,我们的小公主就要撒娇啦。下面我们改造一下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

注意这里把只读属性变成了可读写属性,调用代码依然是那三句不变,我们在第三行加上一个断点,OK,F5运行,到达断点后,我们小心翼翼的F11一步步运行,首先执行到了TestObject中的属性Get中,这是预期的,没有问题,退出Get后,程序执行setParameter中的语句,这也是预期的,go on,退出setParameter后,再按一下F11,o(∩_∩)o...哈哈,小公主撒娇啦,她任性的走进了TestObject中属性的Set中!真是不乖,怎么可以到处乱跑呢,这样你会无意踏坏花花草草呀,如果在set中不是一句打印语句,而是一个终止程序命令,你就惹大祸啦。

如何解决这个问题呢,其实很简单,只要在传入属性前,先把属性的值赋给一个变量,再把这个变量传给VB.NET Hashtable用法就好了。

她在VB.NET中不乖,那她到了C#中会不会有所收敛呢。我们把上面的代码全部用C#改写,发现上面所说的情况没有发生,一切正常,set并没有被调用。

如果把上面的两个类做成一个VB.NET Hashtable用法中的类库,把它加入到一个解决方案中,在C#中调用这两个类,你会发现根本就没有办法直接调用属性传入setParameter,会出现编译错误,要求必须将其先存到一个变量中才可以,根本就没有给她留下撒娇的机会。

这样看来,如果说C#是一位严父,根本不允许撒娇的存在,那么VB.NET就是一位慈母,她是那么的包容,又是那么的纵容!

新闻标题:VB.NETHashtable用法相关概念详解
分享地址:http://www.36103.cn/qtweb/news0/26100.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联