我相信这对你们来说是一个简单的问题,但我不知道这个开发人员在做什么。将C#格式转换为VB
name = String.Format(MyStringBuilder + "");
如果我将它转换为VB我得到的消息,“运营商+不是为类型system.text.stringbuilder和字符串定义”。同样的事情,如果我使用&。
我相信这对你们来说是一个简单的问题,但我不知道这个开发人员在做什么。将C#格式转换为VB
name = String.Format(MyStringBuilder + "");
如果我将它转换为VB我得到的消息,“运营商+不是为类型system.text.stringbuilder和字符串定义”。同样的事情,如果我使用&。
从最严格的意义上讲,原始代码中的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的隐式转换使用中的一起选择+运算符与空字符串的字符串的人。
在VB中执行此任务只需要:
name = MyStringBuilder.ToString()
使用MyStringBuilder.ToString()。这将解决问题。
你试图连接一StringBuilder对象和字符串一起 - 那就没办法了:)
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()
是谁写的代码现在解雇? – 2010-04-19 15:04:24
规则#1用于在任何两种语言之间转换代码:首先将任何不明确的片段转换为更明智的变体,然后转换本身会更容易。 – 2010-04-19 15:10:19
现在编写代码的人是谁? ;) – Guffa 2010-04-19 15:13:12