“不能将类型 'System.Generic.Collection.IEnumerable<int> 隐式转换为 <int>

Posted

技术标签:

【中文标题】“不能将类型 \'System.Generic.Collection.IEnumerable<int> 隐式转换为 <int>【英文标题】:"Connot implicitily convert type 'System.Generic.Collection.IEnumerable<int> to <int>“不能将类型 'System.Generic.Collection.IEnumerable<int> 隐式转换为 <int> 【发布时间】:2021-07-27 17:22:15 【问题描述】:

我正在构建一个程序,该程序将从标准纸牌中取出两张用户选择的卡片。这副牌由 KeyValuePairs 组成,它被设置为数字然后花色。用户选择两张卡片后,我需要程序将卡片的整数部分相加。我不知道如何获取 KeyValuePair 的 Key 部分。

我知道我下面的代码显然不起作用,但我已经包含了图像以显示我正在尝试做的事情。我的程序应该从“选择的卡片索引”处的 KeyValuePairs 中获取键值,而不是在这篇文章的标题中提供错误。

Picture of my Current Code

我尝试使用 Convert.ToInt32 将整行转换为字符串,但它也不起作用。我到处寻找这个问题的准确答案,但没有运气。

以下是其余相关代码:

    public static List<KeyValuePair<int, string>> Player1Hand = new 
    List<KeyValuePair<int, string>>(10); // creating the player's hand

    public static int chosencard;
    public static int player1total;
    public static string input;

    input = Console.ReadLine();
    chosencard2 = Int32.Parse(input);

    player1total = Hand.Player1Hand[chosencard];
    Console.WriteLine("Player 1's total is " + player1total);

谢谢大家提前帮忙。

【问题讨论】:

在没有任何代码的情况下,我们能做的最好的就是猜测,我们在这里不这样做。因此,请提供一些代码,以便我们查看问题所在。链接图片是不够的。 既然可以使用字典,为什么还要使用List&lt;KeyValuePair&gt;?如果你这样做了Dictionary&lt;int, string&gt; Player1Hand,你就可以Player1Hand.Keys 对不起,这里是新人,我已将所有相关代码添加到帖子中。为抬头干杯。 【参考方案1】:

您的Player1HandKeyValue&lt;int, string&gt; 的列表。因此,您当前正在做的是访问该对,而您应该在给定索引处访问该对的键。

我认为,根据你给我的信息,这应该可以解决问题:

player1Total += Hand.Player1Hand[chosencard].Key

【讨论】:

【参考方案2】:

根据您发布的图片,您有一个List&lt;KeyValuePair&lt;int, string&gt;&gt; 并访问该列表中的元素。作为返回类型,你会得到一个KeyValuePair&lt;int, string&gt;,当然不能转换为int。根据您想要实现的目标,您可以访问 KeyKeyValuePairValue。根据类型我猜是Key

【讨论】:

以上是关于“不能将类型 'System.Generic.Collection.IEnumerable<int> 隐式转换为 <int>的主要内容,如果未能解决你的问题,请参考以下文章