我的问题在于此代码:
class LinkedList<T>
{
Node<T> first;
public LinkedList(T element=default(T)) {
if (element != default(T)) **<---- problem here**
first = new Node<T>(element);
}
}
我试图在没有任何东西作为参数传递的情况下创建一个LinkedList为空,而在另一种情况下,创建一个linkList,其中param的内容将是第一个节点的内容。
解决这个问题的一些方法?
非常感谢,问候
答案 0 :(得分:4)
使用两个构造函数:
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
:-),它是他说阿拉伯人“发明了”它,它是现代数学的核心。现在...... default(int) == 0
。悲伤。
答案 1 :(得分:1)
只需使用2个构造函数:
class LinkedList<T>
{
Node<T> first;
public LinkedList(T element)
{
first = new Node<T>(element);
}
public LinkedList()
{
}
}