重载
函数重载允许创建多个同名函数,每个函数可使用不同的参数类型,或者参数的个数不同。
static void Main(string[] args)
{
Printf();
Printf(1);
Printf("1");
}
static void Printf()
{
Console.WriteLine();
}
static void Printf(int i)
{
Console.WriteLine(i);
}
static void Printf(string i)
{
Console.WriteLine(i);
}
而Console.WriteLine();拥有19种情况
委托
委托是一种存储函数引用的类型
delegate void Printf(string i);
static void Main(string[] args)
{
Printf a=new Printf(Print);
a("100");
Console.ReadLine();
}
static void Print(string i)
{
Console.WriteLine(i);
}
//记得当初学到这里时,感觉委托有个卵子用...
集合
类似与数组,但不是数组。可以用集合维护对象组
- IEnumerable 可以迭代集合中的项
- ICollection(继承于IEnumerable)可以获取集合中项的个数,并能把项复制到一个简单的数组类型中。
- IList(继承于IEnumerable和ICollection)提供了集合的项列表,允许访问这些项,并提供一些其他一些与项列表相关的基本功能
- IDictionary(继承于IEnumerable和ICollection)类似于IList,但提供了可通过键值(而不是索引)访问的项列表
static void Main(string[] args)
{
ArrayList classA = new ArrayList();
classA.Add(new A(1));
classA.Add(new A(2));
classA.Add(new A(3));
foreach (A a in classA)
{
a.Printf();
}
}
public class A
{
public int a;
public A(int a)
{
this.a = a;
}
public void Printf()
{
Console.WriteLine(this.a);
}
}
ArrayList集合是System.Object对象的集合(通过多态性赋给A对象),所以必须进行数据类型转换
((A)classA[0]).Printf();