⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 objecttype.vb

📁 大名鼎鼎的mono是.NET平台的跨平台(支持linux
💻 VB
📖 第 1 页 / 共 3 页
字号:
                    If TC1 = TypeCode.Boolean Then                        short1 = -1S * Convert.ToInt16(obj1)                    Else                        short1 = Convert.ToInt16(obj1)                    End If                    If TC2 = TypeCode.Boolean Then                        short2 = -1S * Convert.ToInt16(obj2)                    Else                        short2 = Convert.ToInt16(obj2)                    End If                    Return (Convert.ToInt16(short1) And Convert.ToInt16(short2))                Case TypeCode.Int64                    If TC1 = TypeCode.Boolean Then                        l1 = -1 * Convert.ToInt64(obj1)                    Else                        l1 = Convert.ToInt64(obj1)                    End If                    If TC2 = TypeCode.Boolean Then                        l2 = -1 * Convert.ToInt64(obj2)                    Else                        l2 = Convert.ToInt64(obj2)                    End If                    Return (Convert.ToInt64(l1) And Convert.ToInt64(l2))                Case TypeCode.Single                    sn1 = Convert.ToSingle(obj1)                    sn2 = Convert.ToSingle(obj2)                    Return (Convert.ToInt64(sn1) And Convert.ToInt64(sn2))                Case TypeCode.String                    If TC1 = TypeCode.Boolean Then                        dbl1 = -1 * Convert.ToDouble(obj1)                    Else                        dbl1 = Convert.ToDouble(obj1)                    End If                    If TC2 = TypeCode.Boolean Then                        dbl2 = -1 * Convert.ToDouble(obj2)                    Else                        dbl2 = Convert.ToDouble(obj2)                    End If                    Return (Convert.ToInt64(dbl1) And Convert.ToInt64(dbl2))                Case Else                    Throw New InvalidCastException            End Select        End Function        Public Shared Function BitOrObj(ByVal obj1 As System.Object, ByVal obj2 As System.Object) As System.Object            Dim dbl1 As Double            Dim dbl2 As Double            Dim sn1 As Single            Dim sn2 As Single            Dim dec1 As Decimal            Dim dec2 As Decimal            Dim l1 As Long            Dim l2 As Long            Dim i1 As Integer            Dim i2 As Integer            Dim short1 As Short            Dim short2 As Short            '' FIXME: return typecode should be the second obj's typecode             ''        and not int64 all the time             If (obj1 Is Nothing) Then                Return Convert.ToInt64(obj2)            End If            If (obj2 Is Nothing) Then                Return Convert.ToInt64(obj1)            End If            Dim TC1 As TypeCode = Type.GetTypeCode(obj1.GetType())            Dim TC2 As TypeCode = Type.GetTypeCode(obj2.GetType())            '' select the TypeCode to return            Dim LTypeFound As TypeCode = BiggestTypeCode(obj1, obj2)            Select Case (LTypeFound)                Case TypeCode.Boolean                    Return ((BooleanType.FromObject(obj1)) Or (Convert.ToBoolean(obj2)))                Case TypeCode.Byte                    Return ((ByteType.FromObject(obj1)) Or (Convert.ToByte(obj2)))                Case TypeCode.Double                    If TC1 = TypeCode.Boolean Then                        dbl1 = -1 * Convert.ToDouble(obj1)                    Else                        dbl1 = Convert.ToDouble(obj1)                    End If                    If TC2 = TypeCode.Boolean Then                        dbl2 = -1 * Convert.ToDouble(obj2)                    Else                        dbl2 = Convert.ToDouble(obj2)                    End If                    Return (Convert.ToInt64(dbl1) Or Convert.ToInt64(dbl2))                Case TypeCode.Decimal                    If TC1 = TypeCode.Boolean Then                        dec1 = -1 * Convert.ToDecimal(obj1)                    Else                        dec1 = Convert.ToDecimal(obj1)                    End If                    If TC2 = TypeCode.Boolean Then                        dec2 = -1 * Convert.ToDecimal(obj2)                    Else                        dec2 = Convert.ToDecimal(obj2)                    End If                    Return (Convert.ToInt64(dec1) Or Convert.ToInt64(dec2))                Case TypeCode.Int32                    If TC1 = TypeCode.Boolean Then                        i1 = -1 * Convert.ToInt32(obj1)                    Else                        i1 = Convert.ToInt32(obj1)                    End If                    If TC2 = TypeCode.Boolean Then                        i2 = -1 * Convert.ToInt32(obj2)                    Else                        i2 = Convert.ToInt32(obj2)                    End If                    Return (Convert.ToInt32(i1) Or Convert.ToInt32(i2))                Case TypeCode.Int16                    If TC1 = TypeCode.Boolean Then                        short1 = -1S * Convert.ToInt16(obj1)                    Else                        short1 = Convert.ToInt16(obj1)                    End If                    If TC2 = TypeCode.Boolean Then                        short2 = -1S * Convert.ToInt16(obj2)                    Else                        short2 = Convert.ToInt16(obj2)                    End If                    Return (Convert.ToInt16(short1) Or Convert.ToInt16(short2))                Case TypeCode.Int64                    If TC1 = TypeCode.Boolean Then                        l1 = -1 * Convert.ToInt64(obj1)                    Else                        l1 = Convert.ToInt64(obj1)                    End If                    If TC2 = TypeCode.Boolean Then                        l2 = -1 * Convert.ToInt64(obj2)                    Else                        l2 = Convert.ToInt64(obj2)                    End If                    Return (Convert.ToInt64(l1) Or Convert.ToInt64(l2))                Case TypeCode.Single                    sn1 = Convert.ToSingle(obj1)                    sn2 = Convert.ToSingle(obj2)                    Return (Convert.ToInt64(sn1) Or Convert.ToInt64(sn2))                Case TypeCode.String                    If TC1 = TypeCode.Boolean Then                        dbl1 = -1 * Convert.ToDouble(obj1)                    Else                        dbl1 = Convert.ToDouble(obj1)                    End If                    If TC2 = TypeCode.Boolean Then                        dbl2 = -1 * Convert.ToDouble(obj2)                    Else                        dbl2 = Convert.ToDouble(obj2)                    End If                    Return (Convert.ToInt64(dbl1) Or Convert.ToInt64(dbl2))                Case Else                    Throw New InvalidCastException            End Select        End Function        Public Shared Function BitXorObj(ByVal obj1 As System.Object, ByVal obj2 As System.Object) As System.Object            Dim dbl1 As Double            Dim dbl2 As Double            Dim sn1 As Single            Dim sn2 As Single            Dim dec1 As Decimal            Dim dec2 As Decimal            Dim l1 As Long            Dim l2 As Long            Dim i1 As Integer            Dim i2 As Integer            Dim short1 As Short            Dim short2 As Short            '' FIXME: return typecode should be the second obj's typecode             ''        and not int64 all the time             If (obj1 Is Nothing) Then                Return Convert.ToInt64(obj2)            End If            If (obj2 Is Nothing) Then                Return Convert.ToInt64(obj1)            End If            Dim TC1 As TypeCode = Type.GetTypeCode(obj1.GetType())            Dim TC2 As TypeCode = Type.GetTypeCode(obj2.GetType())            '' select the TypeCode to return            Dim LTypeFound As TypeCode = BiggestTypeCode(obj1, obj2)            Select Case (LTypeFound)                Case TypeCode.Boolean                    Return ((BooleanType.FromObject(obj1)) Xor (Convert.ToBoolean(obj2)))                Case TypeCode.Byte                    Return ((ByteType.FromObject(obj1)) Xor (Convert.ToByte(obj2)))                Case TypeCode.Double                    If TC1 = TypeCode.Boolean Then                        dbl1 = -1 * Convert.ToDouble(obj1)                    Else                        dbl1 = Convert.ToDouble(obj1)                    End If                    If TC2 = TypeCode.Boolean Then                        dbl2 = -1 * Convert.ToDouble(obj2)                    Else                        dbl2 = Convert.ToDouble(obj2)                    End If                    Return (Convert.ToInt64(dbl1) Xor Convert.ToInt64(dbl2))                Case TypeCode.Decimal                    If TC1 = TypeCode.Boolean Then                        dec1 = -1 * Convert.ToDecimal(obj1)                    Else                        dec1 = Convert.ToDecimal(obj1)                    End If                    If TC2 = TypeCode.Boolean Then                        dec2 = -1 * Convert.ToDecimal(obj2)                    Else                        dec2 = Convert.ToDecimal(obj2)                    End If                    Return (Convert.ToInt64(dec1) Xor Convert.ToInt64(dec2))                Case TypeCode.Int32                    If TC1 = TypeCode.Boolean Then                        i1 = -1 * Convert.ToInt32(obj1)                    Else                        i1 = Convert.ToInt32(obj1)                    End If                    If TC2 = TypeCode.Boolean Then                        i2 = -1 * Convert.ToInt32(obj2)                    Else                        i2 = Convert.ToInt32(obj2)                    End If                    Return (Convert.ToInt32(i1) Xor Convert.ToInt32(i2))                Case TypeCode.Int16                    If TC1 = TypeCode.Boolean Then                        short1 = -1S * Convert.ToInt16(obj1)                    Else                        short1 = Convert.ToInt16(obj1)                    End If                    If TC2 = TypeCode.Boolean Then                        short2 = -1S * Convert.ToInt16(obj2)                    Else                        short2 = Convert.ToInt16(obj2)                    End If                    Return (Convert.ToInt16(short1) Xor Convert.ToInt16(short2))                Case TypeCode.Int64                    If TC1 = TypeCode.Boolean Then                        l1 = -1 * Convert.ToInt64(obj1)                    Else                        l1 = Convert.ToInt64(obj1)                    End If                    If TC2 = TypeCode.Boolean Then                        l2 = -1 * Convert.ToInt64(obj2)                    Else                        l2 = Convert.ToInt64(obj2)                    End If                    Return (Convert.ToInt64(l1) Xor Convert.ToInt64(l2))                Case TypeCode.Single                    If TC1 = TypeCode.Boolean Then                        sn1 = -1 * Convert.ToSingle(obj1)                    Else                        sn1 = Convert.ToSingle(obj1)                    End If                    If TC2 = TypeCode.Boolean Then                        sn2 = -1 * Convert.ToSingle(obj2)                    Else                        sn2 = Convert.ToSingle(obj2)                    End If                    Return (Convert.ToInt64(sn1) Xor Convert.ToInt64(sn2))                Case TypeCode.String                    If TC1 = TypeCode.Boolean Then                        dbl1 = -1 * Convert.ToDouble(obj1)                    Else                        dbl1 = Convert.ToDouble(obj1)                    End If                    If TC2 = TypeCode.Boolean Then                        dbl2 = -1 * Convert.ToDouble(obj2)                    Else                        dbl2 = Convert.ToDouble(obj2)                    End If                    Return (Convert.ToInt64(dbl1) Xor Convert.ToInt64(dbl2))                Case Else                    Throw New InvalidCastException            End Select        End Function        Public Shared Function AddObj(ByVal o1 As System.Object, ByVal o2 As System.Object) As System.Object            Dim b1 As Byte            Dim b2 As Byte            Dim bool1 As Boolean            Dim bool2 As Boolean            Dim dbl1 As Double            Dim dbl2 As Double            Dim f1 As Single            Dim f2 As Single            Dim dec1 As Decimal            Dim dec2 As Decimal            Dim l1 As Long            Dim l2 As Long            Dim i1 As Integer            Dim i2 As Integer            Dim short1 As Short            Dim short2 As Short            Dim s1 As String            Dim s2 As String            ' comparing null objects            ' if both are null, return 0            ' if one is a type, convert the other to its 'null value'            If (o1 Is Nothing) And (o2 Is Nothing) Then                Return 0            End If            If (o1 Is Nothing) Then                o1 = CreateNullObjectType(o2)            End If            If (o2 Is Nothing) Then                o2 = CreateNullObjectType(o1)            End If            'FIXME: Add defense for checking overflow.            'FIXME: Add support for Date            If (TypeOf o1 Is Double) Or (TypeOf o2 Is Double) Then                dbl1 = Convert.ToDouble(o1)                dbl2 = Convert.ToDouble(o2)                Return dbl1 + dbl2            ElseIf (TypeOf o1 Is Single) Or (TypeOf o2 Is Single) Then                f1 = Convert.ToSingle(o1)                f2 = Convert.ToSingle(o2)                Return f1 + f2            ElseIf (TypeOf o1 Is Decimal) Or (TypeOf o2 Is Decimal) Then                dec1 = Convert.ToDecimal(o1)                dec2 = Convert.ToDecimal(o2)                Return dec1 + dec2            ElseIf (TypeOf o1 Is Long) Or (TypeOf o2 Is Long) Then                l1 = Convert.ToInt64(o1)                l2 = Convert.ToInt64(o2)                Return l1 + l2            ElseIf (TypeOf o1 Is Integer) Or (TypeOf o2 Is Integer) Then                i1 = Convert.ToInt32(o1)                i2 = Convert.ToInt32(o2)                Return i1 + i2            ElseIf (TypeOf o1 Is Short) Or (TypeOf o2 Is Short) Then                short1 = Convert.ToInt16(o1)                short2 = Convert.ToInt16(o2)                Return short1 + short2            ElseIf (TypeOf o1 Is Byte) Or (TypeOf o2 Is Byte) Then                b1 = Convert.ToByte(o1)                b2 = Convert.ToByte(o2)                Return b1 + b2            ElseIf (TypeOf o1 Is Boolean) Or (TypeOf o2 Is Boolean) Then                bool1 = Convert.ToBoolean(o1)                bool2 = Convert.ToBoolean(o2)                Return Convert.ToInt16(bool1) + Convert.ToInt16(bool2)            ElseIf ((TypeOf o1 Is String) And (TypeOf o2 Is String)) Or _                    ((TypeOf o1 Is Char) And (TypeOf o2 Is Char)) Or _                    ((TypeOf o1 Is String) And (TypeOf o2 Is Char)) Or _                    ((TypeOf o1 Is Char) And (TypeOf o2 Is String)) Then                ' both are String, its a Concat                ' both are Char, its a Concat                ' one is String and one is Char, its a Concat                s1 = Convert.ToString(o1)                s2 = Convert.ToString(o2)                Return s1 + s2            ElseIf (TypeOf o1 Is String) Or (TypeOf o2 Is String) Then                ' one is String, its a numeric Add                s1 = Convert.ToString(o1)                s2 = Convert.ToString(o2)                If s1 = "" Then s1 = "0"                If s2 = "" Then s2 = "0"                dbl1 = Convert.ToDouble(s1)                dbl2 = Convert.ToDouble(s2)                Return dbl1 + dbl2            Else ' Not implemented case                Throw GetCaseNotImplemented("Implement me: " + o1.GetType.Name + " " + o2.GetType.Name)            End If        End Function        Public Shared Function SubObj(ByVal o1 As System.Object, ByVal o2 As System.Object) As System.Object            Dim b1 As Byte

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -