using System;
using System.Collections.Generic; // 命名空间 
using System.Linq; // linq 是一种语言集成查询。


/*
所属类型不同
匿名内部类: 可以是接口,也可以是抽象类 ,还可以操作具体类


lambda表达式:只能操作接口 interface



使用限制不同:
如果接口中有且仅仅有一个抽象方法,可以使用lambda表达式,也可以使用匿名内部类。
如果接口中多于一个抽象方法,只能使用匿名内部类,而不能使用lambda表达式。


实现原理不同:

匿名内部类; 编译之后,产生一个单独的.class字节码文件


比较下来就是匿名内部类的选择性更大。而lambda表达式选择性小,少。

must there be! 
匿名内部类

前提:需要存在一个接口 或者类


1 创建实现类
2 重写方法
3 创建实现类对象
4 调用重写后的方法

匿名内部类

格式:
new 类名 ? 接口名 ()
{
}

 

 

 

*/


namespace AnonymousDemo1
{
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello World!");


}

// new { ID=1,Name=""}

//使用object 声明 
object student2 = new
{
ID = 2,
Name = "李四",
Age = 20
};
// 2. 使用 var 声明

//var student = new
//{
// ID = 1,
// Name = "张三"
//};

//匿名方法

//private void Start()
//{
// de = delegate (int a, int b)
// {
// return a + b;
// };
//}

// new Interface(){
// public void show()
// {


// }


//}
//4.匿名对象 和 Linq 搭载
////匿名对象 和 Linq
//int[] nums = new int[] { 1, 2, 3 };

//var studentList = nums.Select(q => new
//{
// ID = q,
// Name = "姓名" + q
//});

 

 

}
}