我相信这对你们来说是一个简单的问题,但我不知道这位开发人员在做什么。
name = String.Format(MyStringBuilder + "");
如果我将其转换为VB,我会收到消息“operator +未定义类型system.text.stringbuilder和string”。如果我使用&。
,同样的事情答案 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()