我相信这对你们来说是一个简单的问题,但我不知道这个开发人员在做什么。
name = String.Format(MyStringBuilder + "");
如果我将其转换为 VB,我会收到消息“未为类型 system.text.stringbuilder 和字符串定义运算符 +”。如果我使用 & 也是一样的。
我相信这对你们来说是一个简单的问题,但我不知道这个开发人员在做什么。
name = String.Format(MyStringBuilder + "");
如果我将其转换为 VB,我会收到消息“未为类型 system.text.stringbuilder 和字符串定义运算符 +”。如果我使用 & 也是一样的。
看起来好像编写它的人正在尝试使用 + 运算符与空字符串一起强制将 MyStringBuilder 隐式转换为字符串。
要在 VB 中执行此分配,您只需要:
name = MyStringBuilder.ToString()
在最严格的意义上,原始代码中的 MyStringBuilder 可能是一个空实例,此时显式调用 .ToString() 将引发异常。但是,提供的代码示例将正确执行。在 VB 中,你可能想说
Dim name As String
If MyStringBuilder Is Nothing Then
name = String.Empty
Else
name = MyStringBuilder.ToString()
End If
这对我来说没有意义,因为 AFAICT 只将一个参数传递给 string.format 并没有做任何事情。
将 "" 添加到 stringbuilder 只是将其强制为字符串。
name = MyStringBuilder.ToString();
这就是我在 C# 中的做法。将该语句转换为 VB 应该更容易加载。
使用 MyStringBuilder.ToString()。这将解决问题。
您正在尝试将 StringBuilder 对象和 String 连接在一起 - 这是行不通的:)
name = String.Format(MyStringBuilder.ToString() + "");
这应该可以正确编译。
在 VB.NET 中,您将使用“&”而不是“+”
这一行:
name = String.Format(MyStringBuilder + "");
导致 MyStringBuilder 隐式转换为字符串(使用 ToString() 方法)以使用“+”运算符。它与以下内容相同:
name = String.Format(MyStringBuilder.ToString() + "");
这与
name = MyStringBuilder.ToString();
在 VB.NET 中变成这样:
name = MyStringBuilder.ToString()