如何将此 VB.net 函数转换为 C#?

How to convert this VB.net function to C#?

我用这个 url: http://converter.telerik.com/ 来转换代码。 需要转换为C#的代码:

Dim rand As New Random()
Function MyRandomNumber() As String
    Dim min As Decimal = 0.01D
    Dim max As Decimal = 9.91D
    Dim decimalPlaces = 3
    Dim multiplier = CDec(Math.Pow(10, decimalPlaces))

    Dim range = (max - min) * multiplier
    Dim val = rand.Next(0, CInt(range + 1))
    Return (val / multiplier + min).ToString()

End Function

但是当我上次这样做并将其复制到我的 C# 解决方案时,它抛出了错误。

Operator '+' cannot be applied to operands of type 'double' and 'decimal'

有效的转换后的 C# 代码:

private Random rand = new Random();
public string MyRandomNumber()
{
    decimal min = 0.01M;
    decimal max = 9.91M;
    var decimalPlaces = 3;
    var multiplier = System.Convert.ToDecimal(Math.Pow(10, decimalPlaces));

    var range = (max - min) * multiplier;
    var val = rand.Next(0, System.Convert.ToInt32(range + 1));
    return (val / (double)multiplier + min).ToString();
}

红色下划线是错误的这一行:

(val / (double)multiplier + min)

正确的转换是:

return (val / multiplier + min).ToString();

与 VB.Net 来源中的完全一致。 doubledecimal 是不同精度的不同类型;不要在它们之间投射,除非你正在做一些非常非常奇怪的事情。