您的位置:首页 > 编程语言 > C#

1.创建泛型 类-C#高级编程

2016-12-10 16:37 337 查看
本文固定连接:http://blog.csdn.net/u013108312/article/details/53559438

namespace Wrox.ProCSharp.Generics
{
public class LinkedListNode
{
public LinkedListNode(object value)
{
this.Value = value;
}

public object Value { get; private set; }

public LinkedListNode Next { get; internal set; }
public LinkedListNode Prev { get; internal set; }
}

}


using System.Collections;

namespace Wrox.ProCSharp.Generics
{
public class LinkedList : IEnumerable
{
public LinkedListNode First { get; private set; }
public LinkedListNode Last { get; private set; }

public LinkedListNode AddLast(object node)
{
var newNode = new LinkedListNode(node);
if (First == null)
{
First = newNode;
Last = First;
}
else
{
Last.Next = newNode;
Last = newNode;
}
return newNode;
}

public IEnumerator GetEnumerator()
{
LinkedListNode current = First;
while (current != null)
{
yield return current.Value;
current = current.Next;
}
}
}

}


using System;

namespace Wrox.ProCSharp.Generics
{
class Program
{
static void Main()
{
var list1 = new LinkedList();
list1.AddLast(2);
list1.AddLast(4);
list1.AddLast("6");

foreach (int i in list1)
{
Console.WriteLine(i);
}

}
}
}


namespace Wrox.ProCSharp.Generics
{
public class LinkedListNode<T>
{
public LinkedListNode(T value)
{
this.Value = value;
}

public T Value { get; private set; }
public LinkedListNode<T> Next { get; internal set; }
public LinkedListNode<T> Prev { get; internal set; }
}
}


using System.Collections;
using System.Collections.Generic;

namespace Wrox.ProCSharp.Generics
{
public class LinkedList<T> : IEnumerable<T>
{
public LinkedListNode<T> First { get; private set; }
public LinkedListNode<T> Last { get; private set; }

public LinkedListNode<T> AddLast(T node)
{
var newNode = new LinkedListNode<T>(node);
if (First == null)
{
First = newNode;
Last = First;
}
else
{
Last.Next = newNode;
Last = newNode;
}
return newNode;
}

public IEnumerator<T> GetEnumerator()
{
LinkedListNode<T> current = First;

while (current != null)
{
yield return current.Value;
current = current.Next;
}
}

IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}

}


using System;

namespace Wrox.ProCSharp.Generics
{
class Program
{
static void Main()
{
var list2 = new LinkedList<int>();
list2.AddLast(1);
list2.AddLast(3);
list2.AddLast(5);

foreach (int i in list2)
{
Console.WriteLine(i);
}

var list3 = new LinkedList<string>();
list3.AddLast("2");
list3.AddLast("four");
list3.AddLast("foo");

foreach (string s in list3)
{
Console.WriteLine(s);
}

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  泛型