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

在Vb.net中将字符串转换为自定义类类型,vb.net,inheritance,subclassing,Vb.net,Inheritance,Subclassing,我找到的大多数搜索结果都与我要查找的结果相反,所以我的问题是: 我正在尝试将系统类型转换为我自己的自定义类型,但正如我所提到的,我的搜索结果并没有起到效果,给了我与我所寻找的相反的结果 假设我有一个字符串“mystringgoesher”和一个类,如: Class MyStringType Dim str As String End Class Dim s As MyStringType = "mystringgoeshere" 我得到这个错误{类型为'String'的值不能转换为

我找到的大多数搜索结果都与我要查找的结果相反,所以我的问题是:

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

假设我有一个字符串“mystringgoesher”和一个类,如:

Class MyStringType

    Dim str As String

End Class
Dim s As MyStringType = "mystringgoeshere"
我得到这个错误{类型为'String'的值不能转换为'Project1.MyStringType'

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

有什么想法吗?thx~

你应该做的是

Class MyStringType

    Dim str As String

End Class
Dim s As MyStringType 
s.str = "mystringgoeshere"
看这个,它正在使用操作符

从最后一个链接:

扩展转换始终在运行时成功,并且不会导致数据丢失。例如,从单到双,从字符到字符串,从派生类型到基类型

所以试试这样吧

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

听起来像是要对System.String进行子类化。这是面向对象编程的基础。继承很重要

)

只需将您的代码稍微更改如下: 类MyStringType 作为字符串的Dim str 子新建(ByVal str1作为字符串) str=str 端接头 末级 Dim s作为新的MyStringType(“abhi”)
这篇文章是为了到处做那件事。太棒了!Thx一束~!顺便说一句,我会改变什么来执行类似-->Dim s as MyStringType=“566”+“98”(这将导致将两个字符串传递给我的类以进行处理)这样的操作?对于此设置来说,这太复杂了吗?@user1666788现在,您的第二个示例将组合这两个字符串并创建一个等于“56698”的MyStringType。如果你想用MyStringTypes做这件事,你必须重写+操作符。如果你想要不同的东西,你需要多解释一下你想要什么。太酷了!是的,这就是我的想法。(这个项目可能看起来很乏味,但实际上是为了一个更复杂的项目,我想到的是一个可以处理我的自定义类型加/除/减或什么的数学)谢谢你的帮助,我很感激:)@user1666788我添加了+运算符覆盖代码来回答,看看这是否是你想要的。的确,这在某些情况下是可行的,但我想在我的类型上使用数学之类的东西,而不仅仅是最初将它设置为某个值。但你能试试真是太好了:) just change ur code little bit like this : Class MyStringType Dim str As String Sub New(ByVal str1 As String) str = str End Sub End Class Dim s As New MyStringType("abhi")