当我从字典中获得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
字典。它只是对该对象的引用。它让我发疯了......
答案 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!");
}