使用这种代码
double socialSecurityFee = 0;
double xsocialSecurityFee = double.Parse (socialSecurityFee);
我遇到了这种错误
错误CS1502:最佳重载方法匹配 `double.Parse(string)'有一些无效的参数(CS1502) (socialSecurityFee)
我的代码出了什么问题?
答案 0 :(得分:4)
我的代码出了什么问题?
正是编译器告诉你的内容 - double.Parse
的任何重载都不适用于double
类型的单个参数。它甚至不清楚你的意思是什么 - 解析通常是从一种类型(通常是字符串)转换为另一种类型(在这种情况下为double
)。您的初始值已经一个double
,那么您期望它做什么?
我的猜测是你实际上在某个地方有一个字符串,并且你正试图解析它 - 所以你需要改变你的参数,以便它使用该字符串而不是socialSecurityFee
变量。目前尚不清楚您是否需要两个double
类型的变量。
此外,如果这意味着代表货币金额(听起来像),您应该考虑使用decimal
代替double
。
答案 1 :(得分:0)
Double.Parse
有四次重载。其中只有一个接受一个参数。该参数的类型为string
,但您尝试传递double
。那是完全编译器错误消息告诉你的内容。您不能这样做,因为double
不能隐式转换为string
。您不能使用不会隐式转换为方法所期望的类型的参数来调用方法。
但是你想做什么? socialSecurityFee
是double
,那你为什么要解析呢?解析意味着分析string
以赋予其意义。
答案 2 :(得分:0)
方法double.Parse()
需要一个string
参数,并且您传递的值为double
。
由于您的原始值已经是双倍,因此您甚至不需要使用double.Parse()
答案 3 :(得分:0)
double.Parse
期望string
作为参数,并且您尝试使用其他double
值来调用它。
我不确定您为什么在这里使用double.Parse
,但要使其有效,请添加ToString()
来电:
double socialSecurityFee = 0;
double xsocialSecurityFee = double.Parse(socialSecurityFee.ToString());
或者只是分配值本身(因为它已经是double
,不是吗?):
double socialSecurityFee = 0;
double xsocialSecurityFee = socialSecurityFee ;
答案 4 :(得分:0)
socialSecurityFee
已经是双倍的了。 double.Parse
期待一个字符串,很难。你不需要在这里解析任何东西。你想做什么?