C#匿名委托和Java匿名局部内部类使用方法示例
作者:
Java在嵌套类型这里提供的特性比较多,假设:Java的字节码只支持静态嵌套类,内部类、局部内部类和匿名局部内部类都是编译器提供的语法糖,这个假设目前没法验证(看不懂字节码),本文先来看一下C#是如何为我们提供的这种语法糖
测试代码
复制代码 代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CSharpStudy
{
class Program
{
static void Main(string[] args)
{
int i = 0;
Action action1 = () =>
{
System.Console.WriteLine(i);
};
i++;
Action action2 = () =>
{
System.Console.WriteLine(i);
};
i++;
action1();
action2();
}
}
}
复制代码 代码如下:
private static void Main(string[] args)
{
<>c__DisplayClass2 CS$<>8__locals3 = new <>c__DisplayClass2();
CS$<>8__locals3.i = 0;
Action action1 = new Action(CS$<>8__locals3.<Main>b__0);
CS$<>8__locals3.i++;
Action action2 = new Action(CS$<>8__locals3.<Main>b__1);
CS$<>8__locals3.i++;
action1();
action2();
}
复制代码 代码如下:
public void <Main>b__0()
{
Console.WriteLine(this.i);
}
public void <Main>b__1()
{
Console.WriteLine(this.i);
}