当前位置: 代码迷 >> C# >> c# Action<T> 语法探究解决方法
  详细解决方案

c# Action<T> 语法探究解决方法

热度:94   发布时间:2016-05-05 03:00:27.0
c# Action<T> 语法探究
最近开发嵌入式项目,参考其代码有如下表示
public Action<T> ActionReadInfo { get; set; }
表示迷惑,网上无法查询详情,特向各位请教!
1、该语法描述的是泛型委托,还是泛型委托型属性
      1)如果是泛型委托,那 { get; set; }是否可以去掉,为什么
      2)如果是泛型委托型属性,这是什么概念,如何用该定义。
2、或许这是一个语法糖,这样描述的意义和好处是啥,网络上面搜索关键字是啥?

谢谢,大家!


------解决思路----------------------
就是一个泛型委托类型的属性,这样就可以将一个没有返回值的方法用参数的形式赋值给该类型实例的属性
------解决思路----------------------
是属性,属性对应的类型是泛型委托,没什么特殊的,跟List<T>什么的用法一样
不是语法糖
------解决思路----------------------
可能你对泛型类型没有正确认识到其机制。

那你把泛型暂时地整体地看作“语法糖”也不是不可以。泛型本身就非常类似于语法糖,它是一种代码自动生成的模板,但是为了避免在目标语言MSIL代码中有太多垃圾代码,它是在 Jit 编译阶段才进行宏扩展的,而不是在c#源代码编译阶段就进行宏扩展,这是它与语法糖的区别。它可以节省编译出来的 .exe 或者 .dll 文件的尺寸。

比如说说你写一个类型
public class ABC<T>
{
    public Action<T> mathod;
    .......
}
然后在使用使用这个类型的代码中,你曾经用过 ABC<int>、ABC<string>、ABC<MyDataType> 等等许多不同的实际类型。那么在编译后,它其实就是只有一个泛型类型 ABC<T>。只有在 Jit 动态编译时才被(仅当加载相应程序模块时)扩展为实际类型代码。
  相关解决方案