T 元素的错误语法 != default(T)

error syntax with T element != default(T)

我的问题出在这段代码上:

class LinkedList<T>
    {

    Node<T> first;

    public LinkedList(T element=default(T)) { 
        if (element != default(T)) **<---- problem here**
            first = new Node<T>(element);
    }

}

我正在尝试创建一个空的 LinkedList,以防没有任何内容作为参数传递,而在另一种情况下,创建一个 linkedList,其中参数的内容将是第一个节点的内容。

这个问题的一些解决方案?

非常感谢,此致

使用两个构造函数:

public LinkedList() { 
}

public LinkedList(T element=default(T)) { 
    first = new Node<T>(element);
}

问题已解决:-)

如果你真的想做一个比较(我不建议这样做,但 PC 是你的):

public LinkedList(T element=default(T)) { 
    var comparer = EqualityComparer<T>.Default;

    if (!comparer.Equals(element, default(T))) 
        first = new Node<T>(element);
}

举例说明为什么它是错误的...0 (zero) 是一个漂亮的数字...很圆...没有丑角,有点像 8 :-) ,据说阿拉伯人 "invented" 它,它是现代数学的核心。现在... default(int) == 0。伤心。

只需使用 2 个构造函数:

class LinkedList<T>
{

    Node<T> first;

    public LinkedList(T element) 
    { 
        first = new Node<T>(element);
    }

    public LinkedList() 
    { 

    }

}