Revision: 5084
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at February 11, 2008 06:22 by RichardIII
Initial Code
using System;
using System.Text;
using System.Collections;
using System.Collections.Generic;
namespace MyOwnGeneric
{
class OwnObject<T>
{
private T content;
private OwnObject<T> next;
public T Content
{
get { return content; }
set { content = value; }
}
public OwnObject<T> Next
{
get { return next; }
set { next = value; }
}
public override string ToString()
{
return content.ToString();
}
}
class LinList<T> : IEnumerable<T>
{
private OwnObject<T> first;
private OwnObject<T> last;
public OwnObject<T> First
{
get { return first; }
set { first = value; }
}
public OwnObject<T> Last
{
get { return last; }
set { last = value; }
}
public void Add(OwnObject<T> item)
{
if (first == null)
{
first = item;
last = item;
}
else
{
last.Next = item;
last = item;
}
}
//function to count items in LinList
public int Count()
{
int counter = 0;
OwnObject<T> position = first;
while (position != null)
{
counter++;
position = position.Next;
}
return counter;
}
//function to get the content at a fix position in LinList
public T GetItem(int pos)
{
int counter = 0;
OwnObject<T> position = first;
//T result = null not possible because value type
T result = default(T);
while (position != null)
{
if (counter == pos)
{
result = position.Content;
break;
}
counter++;
position = position.Next;
}
return result;
}
public override string ToString()
{
string result = "";
OwnObject<T> position = first;
while (position != null)
{
result += position.ToString();
if (position.Next != null)
result += " - ";
position = position.Next;
}
return result;
}
//indexer
public T this[int index]
{
get
{
return this.GetItem(index);
}
}
//interface IEnumerable
public IEnumerator<T> GetEnumerator()
{
OwnObject<T> position = first;
while (position != null)
{
yield return position.Content;
position = position.Next;
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
class Program
{
static void Main(string[] args)
{
LinList<string> test = new LinList<string>();
OwnObject<string> testcont = new OwnObject<string>();
testcont.Content = "test";
OwnObject<string> testcont2 = new OwnObject<string>();
testcont2.Content = "test2";
OwnObject<string> testcont3 = new OwnObject<string>();
testcont3.Content = "test3";
test.Add(testcont);
test.Add(testcont2);
test.Add(testcont3);
//using the interface of IEnumerable
foreach (string item in test)
{
Console.WriteLine(item);
}
//using the indexer and the item counter
for (int i = 0; i < test.Count(); i++)
{
Console.WriteLine(test[i]);
}
}
}
}
Initial URL
Initial Description
This is a demo how to create a Linear List with APTs make using of Generics, Indexer and the IEnumerator Interface. With this APTs it is possible to create a high performace, type safety class which is available for different control loops techniques and so on.
Initial Title
Creating Linear List with Advanced Programming Techniques
Initial Tags
Initial Language
C#