C# 将C格式转换为VB

C# 将C格式转换为VB,c#,vb.net,c#-to-vb.net,string.format,C#,Vb.net,C# To Vb.net,String.format,我相信这对你们来说是个简单的问题,但我不知道这个开发者在做什么 name = String.Format(MyStringBuilder + ""); 如果我将其转换为VB,则会得到消息operator+未为system.text.stringbuilder和string类型定义。如果我使用&.也一样,这对我来说没有意义,因为AFAICT只向string.format传递一个参数没有任何作用 添加到stringbuilder只会将其强制为字符串 name=MyStringBuilder.ToS

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

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

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

也一样,这对我来说没有意义,因为AFAICT只向string.format传递一个参数没有任何作用

添加到stringbuilder只会将其强制为字符串


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

这对我来说没有意义,因为AFAICT只向string.format传递一个参数没有任何作用

添加到stringbuilder只会将其强制为字符串


name=MyStringBuilder.ToString;将该语句转换为VB应该更容易。

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

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

严格来说,原始代码中的MyStringBuilder可能是空实例,此时显式调用.ToString将引发异常。但是,提供的代码示例将正确执行。在VB中,您可能想说

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

似乎编写它的人正试图使用+运算符与空字符串组合,强制MyStringBuilder隐式转换为字符串

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

name = MyStringBuilder.ToString()

似乎编写它的人正试图使用+运算符与空字符串组合,强制MyStringBuilder隐式转换为字符串

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

name = MyStringBuilder.ToString()

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

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

您试图将StringBuilder对象和字符串连接在一起-这不起作用:

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

这应该可以正确编译。

您试图将StringBuilder对象和字符串连接在一起-这不起作用:

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

这应该可以正确编译。

在VB.NET中,您可以使用&而不是a+

这一行:

name = String.Format(MyStringBuilder + "");
正在使用ToString方法导致MyStringBuilder的隐式强制转换为string,以便使用+运算符。这与:

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

name = MyStringBuilder.ToString();
在VB.NET中变成这样:

name = MyStringBuilder.ToString()

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

这一行:

name = String.Format(MyStringBuilder + "");
正在使用ToString方法导致MyStringBuilder的隐式强制转换为string,以便使用+运算符。这与:

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

name = MyStringBuilder.ToString();
在VB.NET中变成这样:

name = MyStringBuilder.ToString()

是谁写的代码现在被解雇了吗?在任何两种语言之间转换代码的规则1:首先将任何模糊的片段转换成一个更合理的变体,那么转换本身就会容易得多。是谁写的代码现在清醒了吗;是谁写的代码现在被解雇了吗?在任何两种语言之间转换代码的规则1:首先将任何模糊的片段转换成一个更合理的变体,那么转换本身就会容易得多。是谁写的代码现在清醒了吗;为什么不采取以下措施来减少冗余?dim name as string=string.empty如果mystringbuilder不是空的,那么name=mystringbuilder.tostringThanks Anthony和其他人。在数据库查询中绕过空值看起来像是VB的老把戏,我从没想过我会在C语言中看到这一点。我只是不相信自己的直觉。Bill@Bill,在C中有更干净、更直观的方法来实现这一点。string name=MyStringBuilder!=无效的MyStringBuilder.ToString:string.Empty;,一个人。但即使在原始代码示例中,string.Format也是多余的。@Anthony,@Bill在VB中可能是暗淡的名称,因为string=IIfMyStringBuilder什么都不是,MyStringBuilder.ToString在更高版本的VB中可以用来代替IIf@MarkJ,我昨天在3.5中测试了IIf,您仍然会收到NullReferenceException。为什么不执行以下操作以减少冗余?dim name as string=string.empty如果mystringbuilder不是空的,那么name=mystringbuilder.tostringThanks Anthony和其他人。在数据库查询中绕过空值看起来像是VB的老把戏,我从没想过我会在C语言中看到这一点。我只是不相信自己的直觉。Bill@Bill,在C中有更干净、更直观的方法来实现这一点。string name=MyStringBuilder!=无效的MyStringBuilder.ToString:string.Empty;,一个人。但即使在原始代码示例中,string.Format也是多余的。@Anthony,@Bill在VB中可能是暗淡的名称,因为string=IIfMyStringBuilder什么都不是,MyStringBuilder.ToString在更高版本的VB中可以用来代替IIf@MarkJ,我昨天在3.5中测试了IIf,你仍然会得到一个NullReferenceException。