在C#.Net中将十进制转换为字符串的问题

the*_*van 4 c# asp.net user-controls types decimal

在将Decimal转换为String时,我尝试了两种方法.

方法1:

    string a = "100.00", b = "50.00";
    string Total = (string)(Convert.ToDecimal(a) + Convert.ToDecimal(b));
Run Code Online (Sandbox Code Playgroud)

它抛出错误,无法将Decimal转换为String.

方法2:

    string Total = (Convert.ToDecimal(a) + Convert.ToDecimal(b)).ToString();
Run Code Online (Sandbox Code Playgroud)

它没有抛出错误,它工作正常.

我想知道这两种转换方法之间的区别以及当我使用方法1时它为什么会抛出错误?

Jam*_*ing 9

第一种方法是尝试取小数(加上2位小数的结果)并将其转换为字符串.由于没有(隐式或)显式从十进制到字符串的转换,因为它不匹配而抛出.

第二个采用小数并且在其上调用ToString()方法 - 因为ToString是十进制类型的有效方法,这使得正常的实例方法调用并且您获得该调用的返回值,这是一个字符串.

由于您已经使用转换调用,您可能会发现使用Convert.ToString将小数字返回到字符串更自然.

如果将"将两位小数加"分隔为单独的局部变量,可能会更清楚,因为这两者都是相同的.

因此,(注释掉)total1失败,因为它试图只是强制转换,我们没有可用的转换.后两者都工作正常,因为它们是返回字符串的方法调用.

string a = "100.00", b = "50.00";
decimal result = Convert.ToDecimal(a) + Convert.ToDecimal(b);
//string total1 = (string)result;
string total2 = result.ToString();
string total3 = Convert.ToString(result);
Run Code Online (Sandbox Code Playgroud)