簡體   English   中英

在C#和VB.NET中自動轉換為字符串

[英]Automatic casting to string in C# and VB.NET

我可以在C#中做到這一點..

int number = 2;
string str = "Hello " + number + " world";

..和str最終成為“Hello 2 world”。

在VB.NET中,我可以這樣做..

Dim number As Integer = 2
Dim str As String = "Hello " + number + " world"

..但是我得到一個InvalidCastException“從字符串轉換”Hello“到'Double'類型無效。”

我知道在這兩種情況下都應該使用.ToString(),但是這里的代碼是什么呢?

在VB中我相信字符串連接運算符是&而不是+所以試試這個:

Dim number As Integer = 2
Dim str As String = "Hello " & number & " world"

基本上當VB看到+我懷疑它嘗試進行數字加法或使用類型中定義的加法運算符(或毫無疑問其他更復雜的東西,基於選項......)注意System.String沒有定義加法運算符 -它通過調用String.Concat隱藏在編譯器中。 (這允許更有效地連接多個字符串。)

Visual Basic區分了+&運算符。 如果表達式不是字符串, &將轉換為字符串。

&運算符(Visual Basic)

+運算符使用更復雜的評估邏輯來確定最終投射的內容(例如,它受Option Strict配置等影響)

+運算符(Visual Basic)

如果可能的話,我建議遠離原始字符串連接。

好的替代方案是使用string.format:

str = String.Format("Hello {0} workd", Number)

或者使用System.Text.StringBuilder類,它在更大的字符串連接上也更有效。

兩者都自動將其參數轉換為字符串。

VB plus(+)運算符不明確。

如果你沒有Option Explicit on,如果我的記憶正確,我可以這樣做:

Dim str = 1 + "2"

並獲得str作為整數= 3。

如果您明確需要字符串連接,請使用&符號運算符

Dim str = "Hello " & number & " world"

它會愉快地將數字轉換為字符串。

我認為這種行為是為了向后兼容而留下的。

在VB中編程時,始終使用&符號來連接字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM