Index: /Include/Classes/System/DateTime.ab
===================================================================
--- /Include/Classes/System/DateTime.ab	(revision 165)
+++ /Include/Classes/System/DateTime.ab	(revision 166)
@@ -82,5 +82,5 @@
 
 	'Copy Constructor
-	Sub DateTime( ByRef datetime As DateTime )
+	Sub DateTime(ByRef datetime As DateTime)
 		This.m_Date = datetime.m_Date
 	End Sub
@@ -89,14 +89,14 @@
 	End Sub
 
-	Function Operator+ (ByRef value As TimeSpan) As DateTime
+	Function Operator + (ByRef value As TimeSpan) As DateTime
 		Dim date As DateTime(Ticks + value.Ticks)
 		Return date
 	End Function
 
-	Function Operator- (ByRef value As DateTime) As TimeSpan
+	Function Operator - (ByRef value As DateTime) As TimeSpan
 		Return TimeSpan.FromTicks(Ticks - value.Ticks)
 	End Function
 
-	Function Operator- (ByRef value As TimeSpan) As DateTime
+	Function Operator - (ByRef value As TimeSpan) As DateTime
 		Dim date As DateTime(Ticks - value.Ticks)
 		Return date
@@ -254,4 +254,8 @@
 			Return False
 		End If
+	End Function
+
+	Override Function GetHashCode() As Long
+		Return HIDWORD(m_Date) Xor LODWORD(m_Date)
 	End Function
 
Index: /Include/Classes/System/Drawing/CharacterRange.ab
===================================================================
--- /Include/Classes/System/Drawing/CharacterRange.ab	(revision 165)
+++ /Include/Classes/System/Drawing/CharacterRange.ab	(revision 166)
@@ -42,9 +42,9 @@
 	End Sub
 
-	Function Operator == (c As CharacterRange)
+	Function Operator ==(c As CharacterRange)
 		Return Equals(c)
 	End Function
 
-	Function Operator <> (c As CharacterRange)
+	Function Operator <>(c As CharacterRange)
 		Return Not Equals(c)
 	End Function
@@ -52,4 +52,8 @@
 	Function Equals(c As CharacterRange)
 		Return first = c.first And length = c.length
+	End Function
+
+	Override Function GetHashCode() As Long
+		Return first Xor length
 	End Function
 
Index: /Include/Classes/System/Drawing/Color.ab
===================================================================
--- /Include/Classes/System/Drawing/Color.ab	(revision 165)
+++ /Include/Classes/System/Drawing/Color.ab	(revision 166)
@@ -75,5 +75,5 @@
 	Sub SetFromCOLORREF(rgb As COLORREF)
 		If (rgb And &hff000000) = &h01000000 Then
-			Exit Sub ' インデックス指定は無効
+			Exit Sub ' パレットインデックス指定は無効
 		Else
 			argb = Color_MakeARGB(255, GetRValue(rgb), GetGValue(rgb), GetBValue(rgb))
@@ -107,4 +107,8 @@
 		Dim c As Color(a, r, g, b)
 		Return c
+	End Function
+
+	Override Function GetHashCode() As Long
+		Return argb As Long
 	End Function
 
Index: /Include/Classes/System/Drawing/Point.ab
===================================================================
--- /Include/Classes/System/Drawing/Point.ab	(revision 165)
+++ /Include/Classes/System/Drawing/Point.ab	(revision 166)
@@ -126,4 +126,8 @@
 	End Function
 
+	Override Function GetHashCode() As Long
+		Return x Xor _System_BSwap(y As DWord)
+	End Function
+
 	Static Function Ceiling(ptf As PointF) As Point
 		Dim pt As Size(Math.Ceiling(ptf.width), Math.Ceiling(ptf.height))
Index: /Include/Classes/System/Drawing/PointF.ab
===================================================================
--- /Include/Classes/System/Drawing/PointF.ab	(revision 165)
+++ /Include/Classes/System/Drawing/PointF.ab	(revision 166)
@@ -133,4 +133,8 @@
 	End Function
 
+	Override Function GetHashCode() As Long
+		Return GetDWord(VarPtr(x)) Xor _System_BSwap(GetDWord(VarPtr(x)))
+	End Function
+
 Private
 	x As Single
Index: /Include/Classes/System/Drawing/Rectangle.ab
===================================================================
--- /Include/Classes/System/Drawing/Rectangle.ab	(revision 165)
+++ /Include/Classes/System/Drawing/Rectangle.ab	(revision 166)
@@ -148,4 +148,8 @@
 	End Function
 
+	Override Function GetHashCode() As Long
+		Return x Xor _System_BSwap(y) Xor width Xor _System_BSwap(height)
+	End Function
+
 	Static Function FromLTRB(l As Long, t As Long, r As Long, b As Long) As Rectangle
 		Dim rect As Rectangle(l, t, r - l, r - b)
Index: /Include/Classes/System/Drawing/RectangleF.ab
===================================================================
--- /Include/Classes/System/Drawing/RectangleF.ab	(revision 165)
+++ /Include/Classes/System/Drawing/RectangleF.ab	(revision 166)
@@ -113,5 +113,5 @@
 	End Function
 
-	Function Operator = (ByRef rc As RectangleF)
+	Function Operator =(ByRef rc As RectangleF)
 		With rc
 			x = .x
@@ -122,9 +122,9 @@
 	End Function
 
-	Function Operator == (ByRef rc As RectangleF)
+	Function Operator ==(ByRef rc As RectangleF)
 		Return Equals(rc)
 	End Function
 
-	Function Operator <> (ByRef rc As RectangleF)
+	Function Operator <>(ByRef rc As RectangleF)
 		Return Not Equals(rc)
 	End Function
@@ -136,4 +136,8 @@
 			Equals = _System_FALSE
 		End If
+	End Function
+
+	Override Function GetHashCode() As Long
+		Return GetDWord(VarPtr(x)) Xor _System_BSwap(GetDWord(VarPtr(y))) Xor GetDWord(VarPtr(width)) Xor _System_BSwap(GetDWord(VarPtr(height)))
 	End Function
 
Index: /Include/Classes/System/Drawing/Size.ab
===================================================================
--- /Include/Classes/System/Drawing/Size.ab	(revision 165)
+++ /Include/Classes/System/Drawing/Size.ab	(revision 166)
@@ -40,10 +40,10 @@
 	End Sub
 
-	Function Operator + (sz As Size) As Size
+	Function Operator +(sz As Size) As Size
 		Dim ret As Size(width + sz.width, height + sz.height)
 		Return ret
 	End Function
 
-	Function Operator - (sz As Size) As Size
+	Function Operator -(sz As Size) As Size
 		Dim ret As Size(width - sz.width, height - sz.height)
 		Return ret
@@ -55,13 +55,13 @@
 	End Function
 
-	Function Operator == (sz As Size) As Boolean
+	Function Operator ==(sz As Size) As Boolean
 		Return Equals(sz)
 	End Function
 
-	Function Operator <> (sz As Size) As Boolean
+	Function Operator <>(sz As Size) As Boolean
 		Return Not Equals(sz)
 	End Function
 
-	Sub Operator = (ByRef sz As Size)
+	Sub Operator =(ByRef sz As Size)
 		width = sz.width
 		height = sz.height
@@ -74,4 +74,8 @@
 			Equals = _System_FALSE
 		End If
+	End Function
+
+	Override Function GetHashCode() As Long
+		Return width Xor _System_BSwap(height)
 	End Function
 
Index: /Include/Classes/System/Drawing/SizeF.ab
===================================================================
--- /Include/Classes/System/Drawing/SizeF.ab	(revision 165)
+++ /Include/Classes/System/Drawing/SizeF.ab	(revision 166)
@@ -40,23 +40,23 @@
 	End Sub
 
-	Function Operator + (sz As SizeF) As SizeF
+	Function Operator +(sz As SizeF) As SizeF
 		Dim ret As SizeF(width + sz.width, height + sz.height)
 		Return ret
 	End Function
 
-	Function Operator - (sz As SizeF) As SizeF
+	Function Operator -(sz As SizeF) As SizeF
 		Dim ret As SizeF(width - sz.width, height - sz.height)
 		Return ret
 	End Function
 
-	Function Operator == (sz As SizeF) As Boolean
+	Function Operator ==(sz As SizeF) As Boolean
 		Return Equals(sz)
 	End Function
 
-	Function Operator <> (sz As SizeF) As Boolean
+	Function Operator <>(sz As SizeF) As Boolean
 		Return Not Equals(sz)
 	End Function
 
-	Sub Operator = (ByRef sz As SizeF)
+	Sub Operator =(ByRef sz As SizeF)
 		width = sz.width
 		height = sz.height
@@ -70,4 +70,7 @@
 		End If
 	End Function
+
+	Override Function GetHashCode() As Long
+		Return VarPtr(GetDWord(width)) Xor _System_BSwap(VarPtr(GetDWord(height)))
 
 	Function IsEmpty() As Boolean
