我想創建一個通用類節點如下:通用分類比較
public class Node<T>
{
public Node<T> Next;
public Node<T> Previous;
T Content;
public Node<T>()
{
}
}
在我的主要(或其他類),我想比較的項目..類似以下內容:(我用僞代碼來說明我的想法,代碼可能會或可能不會真正起作用)。基本上我想找到我所擁有的物品是否在列表中。
main()
{
List<Node<T>> n = new List<Node<T>>()
bool found = false;
T v = new T();
foreach (Node<T> i in n)
{
if i.Content== v
{
found = true;
}
}
}
我瞭解,以比較類的2個實例,我不得不得出從IEquitable我的課,但我想知道如果T屬於我們已經使用所有的時間如int被預定義類,double,string ...我不想重新定義這些類,但會期望比較起作用並使用默認比較器。我如何編寫上述內容以便c#能夠接受它並拋出語法錯誤?
if i.Content== v
{
found = true;
}
我已經試過
if (T)i.Content == (T)v
{
...
}
編譯器似乎並不喜歡它。 其實,我做了以下內容:
Node<T> r = n.Where(x=> (T)x.Content==(T)v).FirstOrDefault()
我得到的錯誤是: ==操作符不能應用於類型的操作數「T」和「T」 請指教。 謝謝!
嘗試.Equals而不是== – DoctorMick
你是否真的在代碼中使用'T'作爲你的類型? – Abion47