int i=new Random().Next(0,100);
int r=0;
void M(){
int j=new Random().Next(100,1000);
Action a=()=>{
this.r=this.i*j;
}
a.Invoke();
}//调用M方法这样的写法非常具有开发意义因为 它节省了太多的不必要的过程,直观而简明非常节省代码
让更少 的代码做到更多 的事,很好,
但是让我担心的是这样做的,编译器方面的“成本” 我不太清楚这后面到底是怎么回事
只是看到MSDN上说 为此做一个内部类 比如上面的情况,那么为Action a的lambda 应该做一个内
部类,当调用 M时也许还看不出来,因为a在M中直接调用了,但如果是事件就不同了例如int i=new Random().Next(0,100);
int r=0;
void M(){
int j=new Random().Next(100,1000);
this.Click+=()=>{
this.r=this.i*j;
}
}
这时优势就很明显了,如果不这样会多写很多东西,现在M调用完了,但是this.Click的定义挂钩方法
就是M方法中的那个lambda却是依然保存着的,MSDN说是编译器自动为此生成一个内部类,不过我的问题
如果有很多lambda 编译器是只用一个内部类呢,还是为每个lambda生成一个内部类,如果为每个一个lambda
生成一个内部类,那么这样做对交通和内存的开销就太大了点,也许会有不值了,不知大家的意思如何?
int r=0;
void M(){
int j=new Random().Next(100,1000);
Action a=()=>{
this.r=this.i*j;
}
a.Invoke();
}//调用M方法这样的写法非常具有开发意义因为 它节省了太多的不必要的过程,直观而简明非常节省代码
让更少 的代码做到更多 的事,很好,
但是让我担心的是这样做的,编译器方面的“成本” 我不太清楚这后面到底是怎么回事
只是看到MSDN上说 为此做一个内部类 比如上面的情况,那么为Action a的lambda 应该做一个内
部类,当调用 M时也许还看不出来,因为a在M中直接调用了,但如果是事件就不同了例如int i=new Random().Next(0,100);
int r=0;
void M(){
int j=new Random().Next(100,1000);
this.Click+=()=>{
this.r=this.i*j;
}
}
这时优势就很明显了,如果不这样会多写很多东西,现在M调用完了,但是this.Click的定义挂钩方法
就是M方法中的那个lambda却是依然保存着的,MSDN说是编译器自动为此生成一个内部类,不过我的问题
如果有很多lambda 编译器是只用一个内部类呢,还是为每个lambda生成一个内部类,如果为每个一个lambda
生成一个内部类,那么这样做对交通和内存的开销就太大了点,也许会有不值了,不知大家的意思如何?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货