using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace Test
{
public interface A
{
void Fun();
}
public class B:A
{
public void Fun()
{
Console.WriteLine("I am B.");
}
}
public class D:A
{
public void Fun()
{
Console.WriteLine("I am D.");
}
}
public class C
{
public A a = null;
public C(A a)
{
this.a = a;
}
public void Fun()
{
a.Fun();
}
}
public class F
{
public delegate void DelegateMethod();
public DelegateMethod dm;
public virtual void Fun()
{
Console.WriteLine("I am F.");
}
}
public class E:F
{
public override void Fun()
{
Console.WriteLine("I am E.");
}
}
public class DList<T>
{
public delegate bool DelegateStr(T t);
public ArrayList arr = new ArrayList();
public DList()
{
}
public DList(ArrayList sArr)
{
arr = sArr;
}
public T this[int index]
{
get { return (T)arr[index]; }
set { arr[index] = value; }
}
public DList<T> FindAll(DelegateStr dm)
{
DList<T> tempList = new DList<T>();
foreach(T t in arr)
{
if (dm(t))
{
tempList.arr.Add(t);
}
}
return tempList;
}
public T Find(DelegateStr dm)
{
foreach (T t in arr)
{
if (dm(t))
{
return t;
}
}
return default(T);
}
}
class Program
{
static void Main(string[] args)
{
C c = new C(new B());
c.Fun();
c = new C(new D());
c.Fun();
F f = new E();
f.dm = new E.DelegateMethod(f.Fun);
f.dm.Invoke();
ArrayList arr = new ArrayList();
arr.Add("aaaa");
arr.Add("bbbbb");
arr.Add("ccccc");
DList<string> dList = new DList<string>(arr);
DList<string> fList = dList.FindAll(delegate(string s) { return s == "aaaa"; });
Console.WriteLine(fList.arr[0]);
Console.WriteLine(fList[0]);
string t = dList.Find(delegate(string s) { return s == "bbbbb"; });
Console.WriteLine(t);
Console.Read();
List<string> a = new List<string>();
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace Test
{
public interface A
{
void Fun();
}
public class B:A
{
public void Fun()
{
Console.WriteLine("I am B.");
}
}
public class D:A
{
public void Fun()
{
Console.WriteLine("I am D.");
}
}
public class C
{
public A a = null;
public C(A a)
{
this.a = a;
}
public void Fun()
{
a.Fun();
}
}
public class F
{
public delegate void DelegateMethod();
public DelegateMethod dm;
public virtual void Fun()
{
Console.WriteLine("I am F.");
}
}
public class E:F
{
public override void Fun()
{
Console.WriteLine("I am E.");
}
}
public class DList<T>
{
public delegate bool DelegateStr(T t);
public ArrayList arr = new ArrayList();
public DList()
{
}
public DList(ArrayList sArr)
{
arr = sArr;
}
public T this[int index]
{
get { return (T)arr[index]; }
set { arr[index] = value; }
}
public DList<T> FindAll(DelegateStr dm)
{
DList<T> tempList = new DList<T>();
foreach(T t in arr)
{
if (dm(t))
{
tempList.arr.Add(t);
}
}
return tempList;
}
public T Find(DelegateStr dm)
{
foreach (T t in arr)
{
if (dm(t))
{
return t;
}
}
return default(T);
}
}
class Program
{
static void Main(string[] args)
{
C c = new C(new B());
c.Fun();
c = new C(new D());
c.Fun();
F f = new E();
f.dm = new E.DelegateMethod(f.Fun);
f.dm.Invoke();
ArrayList arr = new ArrayList();
arr.Add("aaaa");
arr.Add("bbbbb");
arr.Add("ccccc");
DList<string> dList = new DList<string>(arr);
DList<string> fList = dList.FindAll(delegate(string s) { return s == "aaaa"; });
Console.WriteLine(fList.arr[0]);
Console.WriteLine(fList[0]);
string t = dList.Find(delegate(string s) { return s == "bbbbb"; });
Console.WriteLine(t);
Console.Read();
List<string> a = new List<string>();
}
}
}