c#将整数添加到列表中

时间:2012-11-05 09:31:41

标签: c# .net

当我检查文本框是否等于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");
        }
    }
}

6 个答案:

答案 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)

if语句中的

条件总是被计算为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");
            }
        }
    }
}