如何在 if 语句中检查字典中的多个值?

How to check more than one value from dictionary in an if statement?

我刚开始学习 unity,在我的一本 c# 学习书中看到了这个任务。我必须在 foreach 中使用 if 语句创建一个代码,以便它检查我是否负担得起字典中的每个项目,但我不知道如何检查所有这些项目,甚至不知道如何检查特定的一次,所以我可以写 if 3 次例如。

目前我的日志显示了所有项目和它们的价值,但显示了我是否只负担得起第一个。我应该在 IF 括号中放入什么来检查每个值出现后的日志?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LearningCurve : MonoBehaviour
{
    public int currentGold = 3;
    void Start()
    {
        Dictionary<string, int> itemInventory = new Dictionary<string, int>()
        {
            {"Potions", 4 },
            {"Daggers", 3 },
            {"Lockpicks", 1 }
        };

        foreach (KeyValuePair<string, int> itemCost in itemInventory)
        {
            Debug.LogFormat("Item {0} - {1}g", itemCost.Key, itemCost.Value);

            if (currentGold >= itemCost.Value)
            {
                Debug.Log("I can afford that!");
            }
        }
    }

测试代码片段在控制台中提供了两个日志:“我负担得起!”。通过这个,我确定问题出在您的代码段实现中。我建议您检查是否在控制台中启用了折叠。

我附上了一张 Imgur link 以供参考。 Console Log

我不确定我是否理解了这个问题,但我会尽力向您简要介绍您发布的代码中发生的情况。 让我们从 if 开始,if 块的工作原理很简单,您在 C# 中放置一个布尔 bool 的简称,它可以有两个不同的值 true 和一个 false,在 if(BOOL VALUE) 中,如果值为 true,它将 运行 { CODE TO 运行 } 之间的代码。 让我们稍微重构一下代码,看看这里发生了什么。

Dictionary<string, int> itemInventory = new Dictionary<string, int>()
    {
        {"Potions", 4 },
        {"Daggers", 3 },
        {"Lockpicks", 1 }
    };

    foreach (KeyValuePair<string, int> itemCost in itemInventory)
    {
        
        Debug.LogFormat("Item {0} - {1}g", itemCost.Key, itemCost.Value);
        bool iCanBuyitem = currentGold >= itemCost.Value;
        Debug.LogFormat("{0} >= {1} is {2}", currentGold, itemCost.Value,iCanBuyitem);
        if (iCanBuyitem)
        {
             Debug.LogFormat("I can buy {0} ", itemCost.Key);
        }else
        {
             Debug.LogFormat("I can't buy {0} ", itemCost.Key);
        }
    }

与数学中的编程符号不同,>= 不是等式符号,而是一种称为二元运算符的东西,它在你的字典中接受 c# 中许多数字类型之一的两个变量,它们是整数 Dictionary 和生成一个 bool 值,告诉您一个数字是否大于或等于第二个数字,这是一种类似于以下签名的方法 public bool FirstIsBiggerOrEqualToSecond(int first, int second) 这是一个演示输出 https://dotnetfiddle.net/oWlYlY

的 dotnet fiddle

阅读问题 header 你的意思是,如果你想在 IF 中放置两个或多个条件,你必须使用 && operator:

if (currentGold >= itemCost.Value && currentGold <= 15)
{
    Debug.Log("I have enough gold to buy this item and it's cheap.");
}