2

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

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

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

Class MyStringType

    Dim str As String

End Class
Dim s As MyStringType = "mystringgoeshere"

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

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

有任何想法吗?谢谢~

4

4 回答 4

4

查看这篇关于创建自定义类型的 VBCity 文章它正在使用加宽运算符。

从最后一个链接:

扩大转换总是在运行时成功并且不会导致数据丢失。示例是 Single 到 Double,Char 到 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
于 2012-11-07T06:01:37.670 回答
2
只需像这样更改您的代码:

类 MyStringType
    暗淡 str 作为字符串
    子新(ByVal str1 作为字符串)
         str = str
    结束子
结束类

Dim s As New MyStringType("abhi")
于 2012-11-07T06:28:00.470 回答
0

你应该做的是

Class MyStringType

    Dim str As String

End Class
Dim s As MyStringType 
s.str = "mystringgoeshere"
于 2012-11-07T06:00:20.310 回答
0

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

http://en.m.wikipedia.org/wiki/Inheritance_ (面向对象编程)

于 2012-11-07T06:10:42.833 回答