source: trunk/ab5.0/ablib/src/Classes/System/Object.ab

Last change on this file was 658, checked in by イグトランス (egtra), 15 years ago

New式でステップインしたときにステップ数を減らすためReferenceEqualsの修正

File size: 1.6 KB
RevLine 
[195]1
[246]2Namespace System
[51]3
[246]4 Class Object
[58]5
[246]6 Public
[51]7
[246]8 Sub Object()
9 End Sub
10 Sub ~Object()
11 End Sub
[212]12
[658]13 /*
14 @brief 2つのオブジェクトが等しいかどうかを判断する。
15 標準の実装はReferenceEqualsを用いて参照の等価を判断基準としている。
16 */
[246]17 Virtual Function Equals( object As Object ) As Boolean
[658]18 Return ReferenceEquals(This, object)
[246]19 End Function
20
21 Static Function Equals( objectA As Object, objectB As Object ) As Boolean
[634]22 If ActiveBasic.IsNothing(objectA) Then
23 Return ActiveBasic.IsNothing(objectB)
[246]24 Else
25 Return objectA.Equals(objectB)
26 End If
27 End Function
[51]28
[246]29 ' 参照先が等しいか判断する
30 Static Function ReferenceEquals(objectA As Object, objectB As Object) As Boolean
[658]31 Return ObjPtr(objectA) = ObjPtr(objectB)
[246]32 End Function
[195]33
[246]34 ' ハッシュコードを取得する
35 Virtual Function GetHashCode() As Long
36 Return ObjPtr( This ) As Long
37 End Function
[207]38
[246]39 ' オブジェクトに関係する文字列を返す
40 Virtual Function ToString() As String
41 Return GetType().Name
42 End Function
[207]43
[246]44 /*
45 Function Operator Downcast() As VoidPtr
46 End Function
47 */
[207]48
49
[246]50 '----------------------------------------------------------------
51 ' 実行時型情報
52 '----------------------------------------------------------------
[207]53
[246]54 Private
[449]55 _system_object_member_typeInfo As TypeInfo
[207]56
[246]57 Public
58 Sub _System_SetType( typeInfo As TypeInfo )
[275]59 If ActiveBasic.Core._System_TypeBase.IsReady() = False Then
[246]60 Return
61 End If
[207]62
[449]63 This._system_object_member_typeInfo = typeInfo
[246]64 End Sub
65
66 Virtual Function GetType() As TypeInfo
[449]67 Return _system_object_member_typeInfo
[246]68 End Function
69
70 End Class
71
72End Namespace
Note: See TracBrowser for help on using the repository browser.