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

标签 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)”子例程,但它不适用于我正在尝试的方法。

有什么想法吗?谢谢~

最佳答案

看着这个VBCity Article on creating Custom Types它正在使用 Widening运营商。

来自上一个链接:

Widening conversions always succeed at run time and never incur data loss. Examples are Single to Double, Char to String, and a derived type to its base type.

所以尝试这样的事情

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

关于vb.net - 在 Vb.net 中将字符串转换为自定义类类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13263524/

相关文章:

java - 为什么在这里调用父类(super class)方法?

JavaScript继承: using __proto__ within constructor function,而不是构造函数的prototype属性

python - 在子类 PyQT LineEdit 中正确处理 keyPressEvent

python - Call 函数何时以及如何在 Keras 的模型子类化中工作?

SQL SELECT 和 SUM 来自三个

mysql - 迭代时的 SQL 更新

asp.net - IIS 应用程序池 bin 与 *.vb

.net - 如何在 DataGridView 中显示 DateTimePicker?

c++ - 在派生类中调用多个虚函数

go - 在多行 Fyne Entry 小部件中捕获 Enter (更一般地,调用 "parent classes")