试图从班级中删除价值

时间:2013-11-19 21:12:40

标签: c# class integer

我一直在尝试从'Solmu'类中删除手动输入的值,然后将其更改为整数。

 private static void PoiataTiettyArvo(ref Solmu lista)
 {
     Console.WriteLine("Anna arvo jonka haluat poistaa: ");
     int PoistaMinut = int.Parse(Console.ReadLine());

     int arvo = Convert.ToInt32(lista.data);

     if(PoistaMinut != null)
     {
         arvo.RemoveAt(PoistaMinut);
     }
 }

我的Solmu课程定义如下:

public class Solmu
{
    public Solmu next;
    public Solmu prev;
    public double data;
}

似乎RemoveAt不适用于此,任何替代方案?

2 个答案:

答案 0 :(得分:1)

根据您的评论,这看起来像一个链接列表。您必须遍历您的值以找到要删除的节点(此代码未经测试):

private static void PoiataTiettyArvo(ref Solmu lista)
{
    Console.WriteLine("Anna arvo jonka haluat poistaa: ");
    int PoistaMinut = int.Parse(Console.ReadLine());

    var previousNode = null;
    var currentNode = lista;
    while (currentNode != null)
    {
        int arvo = Convert.ToInt32(lista.data);
        if (PoistaMinut == arvo)
        {
            if (previousNode == null)
            {
                // If there was no previous node, the head of the list is being deleted.
                // update lista
                lista = currentNode;
            }
            else
            {
                previousNode.next = currentNode.next;
                if (currentNode.next != null)
                {
                    currentNode.next.prev = previousNode;
                }
            }
            break;
        }

        previousNode = currentNode;
        currentNode = currentNode.next;
    }
}

答案 1 :(得分:0)

更新答案:

好的,现在我明白你要做什么了。您将浏览链接列表以删除与用户输入的项目匹配的项目。

选项1)如果您的Solmu类具有RemoveAt的实现,您可以按照我在下面发布的那样调用它 - 但是,RemoveAt方法通常期望索引值,所以我会称之为Remove(或更具体的内容,如RemoveValue)。

选项2)如果您的Solmu类是自创建的,则需要一个以头值开头的循环,并将data字段与用户输入的值进行比较,然后将其删除。

(删除了我的代码,支持雅各布。)


原始回答:

您没有从lista删除任何内容。你的代码:

int PoistaMinut = int.Parse(Console.ReadLine());
int arvo = Convert.ToInt32(lista.data);
if(PoistaMinut != null)
{
   arvo.RemoveAt(PoistaMinut); // <- Remove an int from an int?
}

正在尝试从arvo删除某些内容。

您应修改代码以说明

lista.RemoveAt(PoistaMinut);

代替。

(但是,在这种情况下,我想知道arvo的用途是什么。你能详细说明吗?)