// Declare a delegate.
delegate void Printer(string s);
class TestClass
{
static void Main()
{
// Instatiate the delegate type using an anonymous method.
Printer p = delegate(string j)
{
System.Console.WriteLine(j);
};
// Results from the anonymous delegate call.
p("The delegate using the anonymous method is called.");
// The delegate instantiation using a named method "DoWork".
p = new Printer(TestClass.DoWork);
// Results from the old style delegate call.
p("The delegate using the named method is called.");
}
// The method associated with the named delegate.
static void DoWork(string k)
{
System.Console.WriteLine(k);
}
}
/* Output:
The delegate using the anonymous method is called.
The delegate using the named method is called.
*/
匿名对象
而在C# 3.0中,我们无须为这些无关紧要的类型浪费时间。通过使用“匿名类型”,只要在需要一个这样的对象时使用没有类型名字的new表达式。var b1 = new { Name = "The First Sample Book", Price = 88.0f };
- var b2 = new { Price = 25.0f, Name = "The Second Sample Book" };
- var b3 = new { Name = "The Third Sample Book", Price = 35.00f };
- Console.WriteLine(b1.GetType());
- Console.WriteLine(b2.GetType());
- Console.WriteLine(b3.GetType());