接下來是一個C#經常被忽略的特性,匿名方法。雖然匿名方法很少用到,但是知道總比不知道的好。以delegate為例,我們平時都是賦予delegate具體的方法,但是有時候有一個方法要委托,但是它要執行的功能實在是很簡單,而且可能也就只用一次而已,但是要給它寫一個具體的方法實在是麻煩。而C#2.0為我們提供了匿名方法的特性,代碼如下:
Code
namespace Anonymity
{
delegate void dele();
class Program
{
static void Main(string[] args)
{
dele d = delegate() { Console.WriteLine("這是一個匿名方法!"); };
d.Invoke();
}
}
}
運行結果如下圖:
接下來是索引器(Indexer)了,寫技術文章不像寫小說,真的挺累的。要構思,要描述,要寫代碼,要調試,更重要的是,要敲鍵盤。好了,抱怨到些為止。索引器(Indexer)能讓我們像訪問數組一樣訪問對象,至於它有什麼作用呢?只有用到了才知道,看代碼:
Code
namespace IndexerTest
{
class PersonNames
{
List<string> names = new List<string>();
/// <summary>
/// 為對象創建索引器,注意它和屬性的get/set的不同
/// </summary>
/// <param name="index">索引值</param>
/// <returns></returns>
public string this[int index]
{
get { return names[index]; }
set { names.Add(value); }
}
}
class Program
{
static void Main(string[] args)
{
PersonNames names = new PersonNames();
names[0] = "微軟";
names[1] = "谷歌";
names[2] = "百度";
for (int i = 0; i < 3; i++)
{
Console.WriteLine(names[i]);
}
}
}
}
遺憾的是,它不支持foreach送代。要實現送代的功能,可以實現IEnumerable接口。