呼叫是模棱两可的错误-骰子游戏[关闭]
Posted
技术标签:
【中文标题】呼叫是模棱两可的错误-骰子游戏[关闭]【英文标题】:Call is ambiguous error - Dice Game [closed] 【发布时间】:2016-11-13 21:58:04 【问题描述】:您好,我正在尝试制作骰子游戏并不断收到此错误,不确定是什么错误,或者我的算法是否有问题。任何帮助,将不胜感激。谢谢 :) 它显示一个错误:
以下方法或属性之间的调用不明确: 'Form1.UpdateGameStatus(int)' 和 'Form1.UpdateGameStatus(int)'
private int UpdateGameStatus(int sumDice)
if (sumDice == 2)
if (sumDice == 3)
if (sumDice == 14)
lblSum.Text = ("You lost!");
if (sumDice == 9)
if (sumDice == 10)
lblSum.Text = ("You're winner!");
if (sumDice == 0)
lblSum.Text = ("Roll again please!");
return;
int point = 0;
int gamestatus = 0;
private void UpdateGameStatus(int sumDice)
while (sumDice == 4 || sumDice == 5 || sumDice == 6 || sumDice==||sumDice == 9 || sumDice == 10)
point = sumDice;
if (sumDice == point)
lblSum.Text = ("You're winner!");
gamestatus = 1;
if (sumDice == 7)
lblSum.Text = ("You lost!");
gamestatus = -1;
return;
private void btnRollDice_Click(object sender, EventArgs e)
int die1 = 0, die2 = 0;
RollDice(out die1, out die2);
UpdateGameStatus(sumDice);
【问题讨论】:
错误不明白怎么办? 有人告诉我同时使用 void 和 int,但它不允许我使用。有什么方法可以同时使用相同的参数和名称? 错误信息专门回答了这个问题。 【参考方案1】:你有两个签名相同的方法:
private void UpdateGameStatus(int sumDice)
和
private int UpdateGameStatus(int sumDice)
编译器不知道你指的是哪一个。它们有不同的返回类型,但它们不是签名的一部分。
【讨论】:
是的,有没有办法让它同时使用?或者我只能使用一个吗?我对此感到困惑。 你可以同时拥有这两种方法,但它们的名字不能相同,或者至少不能采用相同的参数。所以要么重命名其中一个,要么给一个不同的参数。这会让编译器知道你什么时候调用每个。例如,您可以将第一个方法重命名为GetGameStatus(int)
。
不,如果它们都具有相同的名称和相同的输入,则不能同时使用它们。重命名你不想使用的那个。【参考方案2】:
错误消息告诉您出了什么问题:您正在对UpdateGameStatus
进行模棱两可的调用。您有两个方法,都名为UpdateGameStatus
,它们都采用整数值。为什么不只有一个版本可以返回骰子的总和并设置游戏状态?那会解决你的问题。您在这里不必要地复制代码。
编辑:我还注意到您的第一个方法实际上根本不会更新游戏状态,因此如果您确实想保留两者,请考虑重命名那个。
编辑 2:总结一下 cmets 中提到的内容(并且不仅仅是错误消息),您似乎有一些不必要的代码重复。想想你真正想要这个方法做什么。是否要将文本设置为"you lose!"
?您是否希望它跟踪 gamestatus
变量(1、0 或 -1)?你想让它返回gamestatus
变量吗?弄清楚你希望这个方法做什么/返回,并尝试删除重复的代码。
【讨论】:
@Flow101 似乎(据我所知) void 只是做了整数 1 已经做的一些事情。我建议使用整数 1,让它根据掷骰结果更新游戏状态/输出消息,然后还返回掷骰结果。我不确定它的确切用途,但只是试着想想这些函数究竟做了什么以及你如何使用数据。如果您关心返回值(1、0 或 -1),请使用 int 类型,如果不关心,请使用 void 类型(您只关心设置游戏状态) @Flow101 也就是说,将它们组合起来;充分利用每一个并将它们放在一起。你必须自己决定什么是重要的,你是设计程序的人。以上是关于呼叫是模棱两可的错误-骰子游戏[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
System.Windows.Markup.XamlParseException调试Windows Phone应用程序时[关闭]
HTML5 服务器发送事件原型 - 模棱两可的错误和重复轮询?