1

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

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

如果我将其转换为 VB,我会收到消息“未为类型 system.text.stringbuilder 和字符串定义运算符 +”。如果我使用 & 也是一样的。

4

6 回答 6

11

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

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

name = MyStringBuilder.ToString()
于 2010-04-19T14:58:35.537 回答
5

在最严格的意义上,原始代码中的 MyStringBuilder 可能是一个空实例,此时显式调用 .ToString() 将引发异常。但是,提供的代码示例将正确执行。在 VB 中,你可能想说

Dim name As String
If MyStringBuilder Is Nothing Then
   name = String.Empty
Else
   name = MyStringBuilder.ToString()
End If
于 2010-04-19T14:58:35.490 回答
2

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

将 "" 添加到 stringbuilder 只是将其强制为字符串。

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

于 2010-04-19T14:58:29.610 回答
1

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

于 2010-04-19T14:58:59.857 回答
0

您正在尝试将 StringBuilder 对象和 String 连接在一起 - 这是行不通的:)

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

这应该可以正确编译。

于 2010-04-19T15:01:26.827 回答
0

在 VB.NET 中,您将使用“&”而不是“+”

这一行:

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

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

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

这与

name = MyStringBuilder.ToString();

在 VB.NET 中变成这样:

name = MyStringBuilder.ToString()
于 2010-04-19T15:30:28.410 回答