将C#格式转换为VB

时间:2010-04-19 14:56:24

标签: c# vb.net c#-to-vb.net string.format

我相信这对你们来说是一个简单的问题,但我不知道这位开发人员在做什么。

name = String.Format(MyStringBuilder + "");

如果我将其转换为VB,我会收到消息“operator +未定义类型system.text.stringbuilder和string”。如果我使用&。

,同样的事情

6 个答案:

答案 0 :(得分:11)

看起来编写它的人试图使用+运算符与空字符串一起强制将MyStringBuilder隐式转换为字符串。

要在VB中执行此分配,您只需:

name = MyStringBuilder.ToString()

答案 1 :(得分:5)

在最严格的意义上,原始代码中的MyStringBuilder可以是一个null实例,此时对.ToString()进行显式调用会抛出异常。但是,提供的代码示例将正确执行。在VB中,您可能想说

Dim name As String
If MyStringBuilder Is Nothing Then
   name = String.Empty
Else
   name = MyStringBuilder.ToString()
End If

答案 2 :(得分:2)

这对我没有意义,因为AFAICT只将一个参数传递给string.format不会做任何事情。

向stringbuilder添加“”只是将其强制转换为字符串。

name = MyStringBuilder.ToString();将是我在C#中做到这一点的方式。将该语句转换为VB应该更容易加载。

答案 3 :(得分:1)

使用MyStringBuilder.ToString()。这将解决问题。

答案 4 :(得分:0)

您正在尝试将StringBuilder对象和String连接在一起 - 这不起作用:)

name = String.Format(MyStringBuilder.ToString() + "");

这应该正确编译。

答案 5 :(得分:0)

在VB.NET中你会使用“&”而不是“+”

这一行:

name = String.Format(MyStringBuilder + "");

导致MyStringBuilder的隐式转换为字符串(使用ToString()方法)以使用“+”运算符。它与:

相同
name = String.Format(MyStringBuilder.ToString() + "");

相同
name = MyStringBuilder.ToString();

在VB.NET中成为这个:

name = MyStringBuilder.ToString()