当我尝试运行以下脚本时,它会显示'userseqq' conflicts with declaration function.form1.userseqq
,同时也会显示itemseqq
。
有什么想法吗? 谢谢
int uid = Convert.ToInt32(txtbx_id.Text);
int iid = Convert.ToInt32(txtbx_itemid.Text);
for (int ywu = 0; ywu <= 92161; ywu++)
{
int rwer = d[ywu];
if (rwer == uid)
{
int userseqq = ywu;
}
}
for (int yuyu = 0; yuyu <= 1258038; yuyu++)
{
int er = d[yuyu];
if (er == iid)
{
int itemseqq = yuyu;
}
}
dotproduct(userseqq, itemseqq); //<--------the error line
MessageBox.Show("The Score of item id " + itemseqq + " is " + result);
}
答案 0 :(得分:0)
首先,这不起作用,因为userseqq
和itemseqq
对于您调用dotproduct()
方法的代码行不可见。
为什么要在if
语句中声明这些变量?
答案 1 :(得分:0)
由于itemseqq和userseqq在{}语句内部声明,因此当你尝试使用它们时它们都不在范围内。
尝试将两个声明放在代码的顶部,如:
int iid;
int iid;
int itemseqq;
[...]
编辑:如果您之前声明它们,请删除if语句中的int关键字。
答案 2 :(得分:0)
回应你的评论:
我在代码的开头将它们声明为公共整数
那么你不应该在你的方法中重新声明它们。你这样做的地方:
if (rwer == uid)
{
int userseqq = ywu;
}
您正在声明userseqq
变量的全新实例,进行设置,然后放弃它。我有点惊讶编译器抛出错误,但我想编译的IL中的变量范围可能略有不同。无论如何,错误至少可以防止不使用正确变量的错误。
要使用您的班级变量,请不要重新声明:
if (rwer == uid)
{
userseqq = ywu;
}
(itemseqq
变量也是如此。)