2012-11-07 98 views
3

大多數我發現已經變成了是什麼我正在尋找所以這裏的對面搜索結果的是我的問題:字符串轉換爲在Vb.net自定義類類型

我想將系統類型轉換爲我自己的自定義類型,但正如我所提到的那樣,我的搜索結果並沒有得到有效的發揮,並且與我所尋找的相反。

說我有「mystringgoeshere」的字符串,並像一個類:

Class MyStringType 

    Dim str As String 

End Class 
Dim s As MyStringType = "mystringgoeshere" 

,我得到這個錯誤{「字符串」類型的值不能轉換爲「Project1.MyStringType」}

我還沒有任何代碼,因爲我不知道如何實現這一點,但基本上我想要做的是使用像我在代碼塊中的方法設置「s」對象的「str」字符串以上。我試過使用「新(數據作爲字符串)」子程序,但它不適用於我想要的。

任何想法? THX〜

回答

5

在這個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 
+0

工作很棒! Thx一堆〜!順便說一句,我會改變做類似這樣的東西 - > Dim s as MyStringType =「566」+「98」(這將導致傳遞兩個字符串到我的類進行處理)會對這個設置太複雜? – user1666788

+0

@ user1666788現在,您的第二個示例將組合這兩個字符串並創建一個等於「56698」的MyStringType。如果你想用MyStringTypes做到這一點,你將不得不重寫+運算符。如果你想要不同的東西,你需要解釋一下你想要多一點。 –

+0

太棒了!是的,這是我的想法(這個項目看起來很乏味,但它實際上是一個更復雜的項目,我記得實際上是處理我的自定義類型的數學運算,以添加/除去/減去或你有什麼)Thx a一堆爲你的幫助我欣賞它:) – user1666788

0

你應該做的是

Class MyStringType 

    Dim str As String 

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

這個帖子是爲了避開這樣做。 – user1666788

2
 
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") 
+0

真的,在某些情況下會起作用,但我想在我的類型上使用數學等,而不是僅僅將它設置爲初始值。但很好你嘗試:) – user1666788

相關問題