将字符串转换为Vb.net中的自定义类类型

时间:2012-11-07 05:20:42

标签: vb.net inheritance subclassing

我发现的大多数搜索结果都与我正在寻找的相反,所以这是我的问题:

我正在尝试将系统类型转换为我自己的自定义类型,但正如我所提到的,我的搜索结果并没有效果,而是让我与我正在寻找的相反。

假设我有一个“mystringgoeshere”的字符串和类似的字符:

Class MyStringType

    Dim str As String

End Class
Dim s As MyStringType = "mystringgoeshere"

我收到此错误{类型'String'的值无法转换为'Project1.MyStringType'。}

我还没有任何代码,因为我不知道如何实现这一点,但基本上我想做的是使用类似我在代码中的方法设置“s”对象的“str”字符串挡在上面。我已经尝试过使用“new(data as String)”子程序,但它不适用于我正在尝试的内容。

有什么想法吗? THX〜

3 个答案:

答案 0 :(得分:4)

查看此VBCity Article on creating Custom Types正在使用Widening运营商。

来自上一个链接:

  

扩展转换始终在运行时成功,并且永远不会导致数据丢失。示例为Single to Double,Char to String以及派生类型为其基本类型。

所以尝试这样的事情

Public Class Form1

    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        Dim s As MyStringType = "mystringgoeshere"
        Dim s1 As MyStringType = "Hello"
        Dim s2 As MyStringType = s1 + s
    End Sub
End Class

Class MyStringType
    Private _string As String
    Private Sub New(ByVal value As String)
        Me._string = value
    End Sub
    Public Shared Widening Operator CType(ByVal value As String) As MyStringType
        Return New MyStringType(value)
    End Operator
    Public Overrides Function ToString() As String
        Return _string
    End Function
    Public Shared Operator +(ByVal s1 As MyStringType, s2 As MyStringType) As MyStringType
        Dim temp As String = s1._string + s2._string
        Return New MyStringType(temp)
    End Operator
End Class

答案 1 :(得分:0)

你应该做的是

Class MyStringType

    Dim str As String

End Class
Dim s As MyStringType 
s.str = "mystringgoeshere"

答案 2 :(得分:0)

听起来你想要继承System.String。这是OOP编程的基础。继承是PRETTY的重要。

http://en.m.wikipedia.org/wiki/Inheritance_(object-oriented_programming