GetHashCode
Hashing is often done in VB.NET programs—we often use strings as keys to a Dictionary
. Other types (any class
) can also be hashed with GetHashCode
.
With the Overrides keyword, we can implement our own GetHashCode
on a class
. This can be useful if the class
has a unique field we want to base the hash on.
Consider this example VB.NET program—it builds up a string
by appending the value "x." This creates a new string
each time.
GetHashCode
is different each time—this means the integer returned is unique among these strings.Module Module1 Sub Main() Dim value As String = "" ' Create some strings and print their hash codes. For i = 0 To 10 value += "x" ' Print value of GetHashCode. Console.WriteLine("GETHASHCODE: {0}", value.GetHashCode()) Next End Sub End ModuleGETHASHCODE: 588487099 GETHASHCODE: 2037659917 GETHASHCODE: -2047743330 GETHASHCODE: 1240005642 GETHASHCODE: -1113563208 GETHASHCODE: 494194757 GETHASHCODE: -763422986 GETHASHCODE: -1835225738 GETHASHCODE: -876106756 GETHASHCODE: -1704566245 GETHASHCODE: 992105103
How can we specify our own GetHashCode
function? This is usually not needed, and is often not a good idea, but it can be done.
BlogEntry
class
, and print its custom GetHashCode
result, which is 100.BlogEntryDefault
class
, which has no custom GetHashCode
, so the default hash code algorithm for objects is used.Class BlogEntry Public Overrides Function GetHashCode() As Integer Return 100 End Function End Class Class BlogEntryDefault End Class Module Module1 Sub Main() ' Part 1: use class with overrides GetHashCode function. Dim blog = New BlogEntry() Console.WriteLine(blog.GetHashCode()) ' Part 2: use class without a custom GetHashCode. Dim blogDefault = New BlogEntryDefault() Console.WriteLine(blogDefault.GetHashCode()) End Sub End Module100 58225482
It is possible to add a custom GetHashCode
Function on VB.NET classes with the Overrides keyword. This can help in certain cases when objects are used as keys to Dictionaries.