[英]Adding extension methods on LinkedListNode<T>
我正在嘗試創建一種簡單的方法,使我的鏈表在C#中像一個循環鏈表。
我有此代碼,並且它不想顯示為擴展方法。 知道為什么嗎?
static class CircularLinkedList
{
public static LinkedListNode<object> NextOrFirst(this LinkedListNode<object> current)
{
if (current.Next == null)
return current.List.First;
return current.Next;
}
public static LinkedListNode<object> PreviousOrLast(this LinkedListNode<object> current)
{
if (current.Previous == null)
return current.List.Last;
return current.Previous;
}
}
LInkedListNode<T>
代替LinkedListNode<object>
碼。
public static class CircularLinkedList
{
public static LinkedListNode<T> NextOrFirst<T>(this LinkedListNode<T> current)
{
if (current.Next == null)
return current.List.First;
return current.Next;
}
public static LinkedListNode<T> PreviousOrLast<T>(this LinkedListNode<T> current)
{
if (current.Previous == null)
return current.List.Last;
return current.Previous;
}
}
您必須在課堂上指定public
。 您的類是內部的,並且可能是因為如果您的擴展類在另一個項目中,則您無法訪問擴展方法。
public static class CircularLinkedList
{
.....
}
要稍后使用它,請像下面這樣使用它:
LinkedListNode<object> obj = new LinkedListNode<object>(null);
obj.PreviousOrLast();
在以下應用程序中,這對我來說效果很好:
class Program
{
static void Main(string[] args)
{
LinkedListNode<object> node = new LinkedListNode<object>("Hello World");
node.NextOrFirst();
}
}
static class CircularLinkedList
{
public static LinkedListNode<object> NextOrFirst(this LinkedListNode<object> current)
{
if (current.Next == null)
return current.List.First;
return current.Next;
}
public static LinkedListNode<object> PreviousOrLast(this LinkedListNode<object> current)
{
if (current.Previous == null)
return current.List.Last;
return current.Previous;
}
}
確保使用正確的通用類型實例化LinkedListNode,因為使用任何其他類型(即字符串)將不起作用。 但是,可以通過將代碼更改為以下內容來擴展它以支持任何類型的LinkedListNode:
class Program
{
static void Main(string[] args)
{
LinkedListNode<string> node = new LinkedListNode<string>("Hello World");
node.NextOrFirst<string>();
LinkedListNode<int> node2 = new LinkedListNode<int>(3);
node2.NextOrFirst<int>();
}
}
static class CircularLinkedList
{
public static LinkedListNode<T> NextOrFirst<T>(this LinkedListNode<T> current)
{
if (current.Next == null)
return current.List.First;
return current.Next;
}
public static LinkedListNode<T> PreviousOrLast<T>(this LinkedListNode<T> current)
{
if (current.Previous == null)
return current.List.Last;
return current.Previous;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.