VB.NET Hashtable用法相关概念详解

开发 后端
我们在这篇文章中对VB.NET Hashtable用法做了详细的介绍。刚刚接触这门语言的朋友可以通过介绍的内容详细掌握其中的操作技巧。

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

大家都知道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 
    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用法中这样使用这个类是不会有问题的

  1. Dim testHashtable As New 
    Test
    Hashtable  
  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 Test
    Hashtable  
  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就是一位慈母,她是那么的包容,又是那么的纵容!

责任编辑:曹凯 来源: 博客园
相关推荐

2010-01-19 10:12:39

VB.NET Butt

2010-01-21 10:48:18

VB.NET扩展方法

2010-01-08 14:56:18

VB.NET类定义

2010-01-13 10:15:19

VB.NET Stri

2010-01-12 18:05:38

VB.NET对象

2010-01-19 15:08:18

VB.NET对象成员

2010-01-12 17:21:29

VB.NET对象

2010-01-14 17:27:17

VB.NET坐标系统

2010-01-13 18:17:00

VB.NET通信程序

2010-01-12 18:28:28

VB.NET共享变量

2010-01-11 15:01:55

VB.NET冒泡排序

2010-01-19 17:26:37

VB.NET创建过程

2010-01-18 19:29:31

VB.NET多维数组

2010-01-07 14:52:41

VB.NET运算符

2010-01-07 14:10:41

VB.NET数据类型

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实现接口

2010-01-12 17:54:42

VB.NET Dlli

2010-01-21 17:34:48

VB.NET Bool
点赞
收藏

51CTO技术栈公众号