当我检查文本框是否等于1时,我想检查列表是否已包含特定值。当我运行它时,它总是转到else代码。我做错了什么?
List<int> list = new List<int>();
if (Convert.ToInt32(DobbelWaarde.Text) == 1)
{
if (list.Contains(1))
{
Console.WriteLine("1 is allready been chosen");
}
else
{
list.Add(1);
Console.WriteLine();
foreach (int li in list)
{
Console.WriteLine(li);
Console.WriteLine("We add 1");
}
}
}
答案 0 :(得分:5)
第一行initialises是一个空列表:
List<int> list = new List<int>();
列表为空,因此无论您检查的值是什么,Contains()都会返回false。
初始化您可以使用的列表:
List<int> list = new List<int> { 1 };
更多细节在这里: Object and Collection Initializers (C# Programming Guide)
答案 1 :(得分:3)
当我运行它时,它总是转到else代码。
您不是在列表中的任何位置添加整数。您从空列表开始,然后检查它是否包含1
,这就是它进入其他部分的原因。
您可以将列表初始化为:
List<int> list = new List<int>() {1};
答案 2 :(得分:2)
我没有得到你的代码!
第一年的名单没有元素
您的代码,可能是这样的:
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
list.Add(4);
int number = Convert.ToInt32(DobbelWaarde.Text);
if ( number == 1)
{
if (list.Contains(1))
{
Console.WriteLine(number + " is allready been chosen");
}
else
{
list.Add(number );
Console.WriteLine();
foreach (int li in list)
{
Console.WriteLine(li);
Console.WriteLine("We add " + number);
}
}
}
答案 3 :(得分:1)
在检查列表是否包含该号码之前,请始终初始化列表。这将清除清单。 所以你应该将初始化例如移到你的类的构造函数中:
class MyClass
{
List<int> list;
public MyClass()
{
list = new List<int>();
}
private void Validate()
{
if (Convert.ToInt32(DobbelWaarde.Text) == 1)
{
if (list.Contains(1))
{
Console.WriteLine("1 is allready been chosen");
}
else
{
list.Add(1);
// ...
}
}
答案 4 :(得分:0)
条件总是被计算为false,即list没有1所以它返回false,因此else部分被执行。
答案 5 :(得分:0)
定义list
外部checkTextBox方法:
List<int> list = new List<int>();
void CheckTextBox()
{
if (Convert.ToInt32(DobbelWaarde.Text) == 1)
{
if (list.Contains(1))
{
Console.WriteLine("1 is allready been chosen");
}
else
{
list.Add(1);
Console.WriteLine();
foreach (int li in list)
{
Console.WriteLine(li);
Console.WriteLine("We add 1");
}
}
}
}