字典中的双值非常不同

时间:2014-07-22 14:25:04

标签: c# dictionary mono key double

当我从字典中获得double类型的值时,我得到非常奇怪的结果 - 30,75而不是12或31。**而不是7.完全控制器代码(方法是公共异步任务PayPal(int coins) ):

namespace *.Controllers
{
    public class BuyCoinsController : BaseController
    {

        private static Dictionary<int, double> PRICES = new Dictionary<int, double>
        {
            {10, 7.00},
            {20, 12.00},
            {50, 30.00},
            {100, 50.00}
        };

        [HttpPost]
        public async Task<ViewResult> PayPal(int coins)
        {
            try
            {
                double price = PRICES[coins]; // <=========================== here
            }
            ...
        }

我只在这个try-block中使用PRICES字典。它只是对该对象的引用。它让我发疯了......

1 个答案:

答案 0 :(得分:1)

变量“仅存在”它声明的代码块中。如果您尝试访问price块之外的try,则最常见的是访问其他地方声明的变量。

try块之前声明变量,并确保在发生异常时为price分配值。

double price;
try
{
    int coins = 20;
    price = PRICES[coins];
} catch {
    price = 0;
}
// Now price is "visible" here.

但我建议您改用TryGetValue,以避免在找不到密钥时出现异常:

double price;
if (PRICES.TryGetValue(20, out price)) {
    Console.WriteLine("The price is {0}", price);
} else {
    Console.WriteLine("Sorry, no price found!");
}