我想将我的应用程序从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), **--> ), <--** ....
作为无效表达
答案 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), ",", ".");