VB.Net到C#替换

时间:2016-07-17 18:12:52

标签: c# vb.net

我想将我的应用程序从VB.Net重写为C#(我是C#的初学者)

VB代码

If Prc1 <> 0 Then 
Me.PrcBox1.Text = Replace(Format(System.Math.Round((Prc1), 3, MidpointRounding.AwayFromZero), ), ",", ".") 
Else 
Me.PrcBox1.Text = ""

我的C#尝试

if (Prc1 != 0)
   PrcBox1.Text = string.Replace(string.Format(Math.Round((Prc1), 3, MidpointRounding.AwayFromZero), ), ",", ".");
else
   PrcBox1.Text = "";

错误发生在

之间
--> <-- :  .....AwayFromZero), **--> ), <--**  ....  

作为无效表达

4 个答案:

答案 0 :(得分:1)

打破这个:

PrcBox1.Text = string.Replace(
                 string.Format(
                     Math.Round(
                       (Prc1), 3, MidpointRounding.AwayFromZero
                     ), 
                 ), -- end of string.format - missing second parameter
               "," , "." -- for string replace
               )

看来string.format缺少一个参数:https://msdn.microsoft.com/en-us/library/system.string.format(v=vs.110).aspx

答案 1 :(得分:1)

您在VB代码中使用的函数是Microsoft.VisualBasic.Strings.Format,它与string.Format

略有不同

你可以尝试

this.PrcBox1.Text = System.Math.Round(Prc1, 3, MidpointRounding.AwayFromZero)
                                                      .ToString("#,##0").Replace(',', '.'); 

或只是添加对Microsoft.VisualBasic的引用以使用VB函数:

using vb = Microsoft.VisualBasic;

然后

this.PrcBox1.Text = vb.String.Replace( vb.String.Format(
                  System.Math.Round(Prc1, 3, MidpointRounding.AwayFromZero)), ",", ".");

此外,在C#中,您不能将可选参数留空,如VB,
 所以VB中的Format(value, )必须是C#

中的Format(value)

答案 2 :(得分:0)

您有语法错误。您无法调用String.Replace,它不是静态方法,它需要一个对象来调用它,并且无法直接从类型String调用。

嵌套使你的生活变得更加艰难,试图打破这些功能,然后将它们重新组合在一起:

double doubleVal = Math.Round(Prc1, 3, MidpointRounding.AwayFromZero);
sPrcBox1.Text = doubleVal.ToString().Replace(",", ".");

然后:

PrcBox1.Text = (Math.Round((Prc1), 3, MidpointRounding.AwayFromZero)).ToString().Replace(",", ".");

答案 3 :(得分:0)

看起来你有一些错位的括号,这就是给你无效的表达错误。试试这个

PrcBox1.Text = string.Replace(string.Format(Math.Round(Prc1), 3, MidpointRounding.AwayFromZero),  ",", ".");