我发现的大多数搜索结果都与我正在寻找的相反,所以这是我的问题:
我正在尝试将系统类型转换为我自己的自定义类型,但正如我所提到的,我的搜索结果并没有效果,而是让我与我正在寻找的相反。
假设我有一个“mystringgoeshere”的字符串和类似的字符:
Class MyStringType
Dim str As String
End Class
Dim s As MyStringType = "mystringgoeshere"
我收到此错误{类型'String'的值无法转换为'Project1.MyStringType'。}
我还没有任何代码,因为我不知道如何实现这一点,但基本上我想做的是使用类似我在代码中的方法设置“s”对象的“str”字符串挡在上面。我已经尝试过使用“new(data as String)”子程序,但它不适用于我正在尝试的内容。
有什么想法吗? THX〜
答案 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)