C# 试图从类中删除值

C# 试图从类中删除值,c#,class,integer,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)

在将“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不适用于此,有其他选择吗?

更新答案:

好了,现在我明白你想做什么了。您将通过一个链接列表删除与用户输入的项目匹配的项目

选项1)如果你的
Solmu
类有一个
RemoveAt
的实现,你可以像我在下面发布的那样调用它-但是,
RemoveAt
方法通常需要一个索引值,所以我会调用它
Remove
(或者更具体的东西,比如
RemoveValue

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

(删除了我的代码以支持Jacob的)


原始答案:

您没有从
列表a
中删除任何内容。您的代码:

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
有什么作用。你能详细说明一下吗?

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


什么是
Solmu
类?我想从lista.data中删除PoistaMinut<这是双类Solmu{public Solmu next;public Solmu prev;public double data;}供未来读者阅读:
Anna arvo jonka haluat poistaa:
翻译(在谷歌中)要
输入要删除的值:
。您应该发布该类;基本上是链表?没有办法?如果您还没有自己的方法,则必须手动遍历列表以删除。是的,它是链表,请您详细说明如何在不保存列表的情况下删除值。lista.data内容是双精度的,我正在尝试将其转换为Int。因此,我使用了这一行Int arvo=convert.ToInt32(lista.data);太好了,非常感谢。成功了。关于你的问题,为什么我用double来存储int。这是根据我们的作业指导。非常感谢你的帮助。然而,我已经尝试了你的代码,但没有成功。此外,我还尝试按照VisualStudio的建议做了一些更改,但仍然没有成功。再次感谢您的帮助。@CsharpNewbie-为了获得最佳结果,请告诉我们您遇到的错误。第一个错误是:无法在var PreviousNode=null中指定隐式类型的局部变量,因此我将其更改为Solmu PreviousNode=null,错误消失了。但是,当我尝试删除该值时,代码不会执行任何操作。。我仍然得到相同的值。
lista.RemoveAt(PoistaMinut);
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;
    }
}