c#将整数添加到列表中

c#将整数添加到列表中,c#,.net,C#,.net,当我检查文本框是否等于1时,我想检查列表allready是否包含特定值。当我运行这个时,它总是转到else代码。我做错了什么 List<int> list = new List<int>(); if (Convert.ToInt32(DobbelWaarde.Text) == 1) { if (list.Contains(1)) { Console.WriteLine("1 is allready been chosen"); }

当我检查文本框是否等于1时,我想检查列表allready是否包含特定值。当我运行这个时,它总是转到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");
        }
    }
}
List List=新列表();
if(Convert.ToInt32(DobbelWaarde.Text)==1)
{
如果(列表包含(1))
{
Console.WriteLine(“1已选择就绪”);
}
其他的
{
增加第(1)款;
Console.WriteLine();
foreach(列表中的int li)
{
控制台。WriteLine(li);
Console.WriteLine(“我们添加1”);
}
}
}
当我运行这个时,它总是转到else代码

您没有在列表的任何位置添加整数。您从一个空列表开始,然后检查它是否包含
1
,这就是它转到else部分的原因

您可以初始化列表,如下所示:

List<int> list = new List<int>() {1};
List List=newlist(){1};
第一行是一个空列表:

List<int> list = new List<int>();
List List=新列表();
列表为空,因此无论检查的值是什么,都返回false

要初始化列表,您可以使用:

List<int> list = new List<int> { 1 };
List List=新列表{1};
详情如下: 我不知道你的密码

首先,你的列表没有任何元素

您的代码可能是这样的:

 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);
                }
            }
        }
List List=新列表();
增加第(1)款;
增加(2);
增加(3);
增加(4);
int number=Convert.ToInt32(DobbelWaarde.Text);
如果(数字==1)
{
如果(列表包含(1))
{
Console.WriteLine(已选择数字+);
}
其他的
{
列表。添加(编号);
Console.WriteLine();
foreach(列表中的int li)
{
控制台。WriteLine(li);
Console.WriteLine(“我们添加”+数字);
}
}
}

if语句中的条件总是计算为false,即列表没有1,因此它返回false,因此执行else部分

定义您的
列表
外部复选框方法:

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");
            }
        }
    }
}
List List=新列表();
void CheckTextBox()
{
if(Convert.ToInt32(DobbelWaarde.Text)==1)
{
如果(列表包含(1))
{
Console.WriteLine(“1已选择就绪”);
}
其他的
{
增加第(1)款;
Console.WriteLine();
foreach(列表中的int li)
{
控制台。WriteLine(li);
Console.WriteLine(“我们添加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);
                // ...
    }
}
class-MyClass
{
名单;
公共MyClass()
{
列表=新列表();
}
私有void Validate()
{
if(Convert.ToInt32(DobbelWaarde.Text)==1)
{
如果(列表包含(1))
{
Console.WriteLine(“1已选择就绪”);
}
其他的
{
增加第(1)款;
// ...
}
}

因为您的列表总是空的,因为您每次都是在第一次创建新列表之前这样创建的吗?如果这不在for中,或者您缺少一些代码,这是正常的。我相信用1初始化不是一个解决方案。因为在这种情况下,代码将始终运行到内部If块中,我相信@Optical将运行n“我不希望这种情况发生。@Roman,实际上不清楚OP到底需要什么?”我想让他明白,列表需要包含一些元素,并且至少包含值为
1
的元素,以便检查执行代码的if部分(kay:)标记为肯定@habib。您可能会建议在记住其st的范围内声明列表例如,将其设置为数据成员或静态变量