博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.Net 4.0 新特性
阅读量:5280 次
发布时间:2019-06-14

本文共 3556 字,大约阅读时间需要 11 分钟。

A.dynamic

1  public class dynamicDemo 2    {   3        public static void Test() 4        { 5         dynamic d = 100; 6         d += 10; 7         Console.WriteLine(d.GetType()+"    +=10 Result:\t"+d); 8         d = 1.200; 9         d += 10;10         Console.WriteLine(d.GetType() + "   +=10 Result:\t" + d);11         d = "string";12         d += 10;13         Console.WriteLine(d.GetType() + "   +=10 Result:\t" + d);14        }15 }

B.可选(或默认)参数 ,命名参数

public class DefaultParmDemo    {        //可选(或默认)参数:y/z       public void Add(int x, int y = 10, int z = 100)       {
Console.WriteLine(string.Format("x({0})+y({1})+z({2})=Sum({3})",x,y,z,x+y+z)); } public static void Test() { DefaultParmDemo demo=new DefaultParmDemo(); demo.Add(5); demo.Add(5, 5); demo.Add(5, z: 10); demo.Add(5, z: 10, y: 15); //命名参数:方法定义的参数顺序与方法调用时的参数顺序可以不一致 } }

 C.Lazy<T>

 [使用场景]

 i.当创建一个对象的子对象开销比较大时,而且有可能在程序中用不到这个子对象,
   那么可以考虑用延迟加载的方式来创建子对象。
 ii.另外一种情况就是当程序一启动时,需要创建多个对象,但仅有几个对象需要立即使用,
    这样就可以将一些不必要的初始化工作延迟到使用时,这样可以非常有效的提高程序的启动速度。

DataExample:

View Code
1 public class DataExample 2 { 3     public string Title 4     { 5         get; 6         set; 7     } 8     public static List
GetExampleList() 9 {10 List
examples = new List
{ 11 new DataExample{Title="Lazy Load"},12 new DataExample{Title="Delegate"},13 new DataExample{Title="Event"},14 new DataExample{Title="Thread"}15 };16 return examples;17 }18 public static List
> GetLazyExampleList()19 {20 List
> examples=new List
>{ 21 new Lazy
(()=>new DataExample{Title="Lazy Load"}),22 new Lazy
(()=> new DataExample{Title="Delegate"}),23 new Lazy
(()=>new DataExample{Title="Event"}),24 new Lazy
(()=>new DataExample{Title="Thread"})25 };26 return examples;27 }28 }

 

1 public  class LazyDemo 2  { 3        4         public Lazy
> DataExampleA 5 { 6 get; 7 private set; 8 } 9 public List
> DataExampleB10 {11 get;12 private set;13 }14 15 // 第一次引用时加载16 private List
_dataExampleC;17 public List
DataExampleC18 {19 get20 {21 if (_dataExampleC==null)22 {23 _dataExampleC = DataExample.GetExampleList();24 }25 return _dataExampleC;26 }27 }28 public LazyDemo()29 {30 31 //多个对象不一定都用到时32 DataExampleA = new Lazy
>( () => DataExample.GetExampleList()); 33 DataExampleB = DataExample.GetLazyExampleList();34 35 36 }37 public override string ToString()38 {39 40 Console.WriteLine("A IsValueCreated:" +DataExampleA.IsValueCreated);41 int i=0;42 foreach (var item in this.DataExampleB)43 { 44 Console.WriteLine("B Item IsCreated: " +item.IsValueCreated+"\tTitle:"+item.Value.Title); 45 if (i++>0)46 break;47 }48 Console.WriteLine();49 foreach (var item in this.DataExampleB)50 {51 Console.WriteLine("B Item IsCreated: " + item.IsValueCreated + "\tTitle:" + item.Value.Title); 52 }53 54 Console.WriteLine("A IsValueCreated:" +DataExampleA.IsValueCreated);55 return base.ToString();56 }57 58 public static void Test()59 {60 //延迟加载61 LazyDemo blogUser = new LazyDemo();62 blogUser.ToString();63 }64 }

转载于:https://www.cnblogs.com/AspDotNetMVC/archive/2012/11/16/2765571.html

你可能感兴趣的文章
iOS8统一的系统提示控件——UIAlertController
查看>>
PAT甲级——1101 Quick Sort (快速排序)
查看>>
python创建进程的两种方式
查看>>
1.2 基础知识——关于猪皮(GP,Generic Practice)
查看>>
迭代器Iterator
查看>>
java易错题----静态方法的调用
查看>>
php建立MySQL数据表
查看>>
最简单的线程同步的例子
查看>>
旅途上看的电影和观后感
查看>>
Ztree异步树加载
查看>>
关于IE和火狐,谷歌,Safari对Html标签Object和Embed的支持问题
查看>>
poj3320 Jessica's Reading Problem(尺取思路+STL)
查看>>
分布式计算开源框架Hadoop介绍
查看>>
安卓平台接口剖析
查看>>
坏的事情不都会带来坏的结果
查看>>
RPC的基础:调研EOS插件http_plugin
查看>>
第二次团队冲刺第二天
查看>>
bzoj 2257 (JSOI 2009) 瓶子与燃料
查看>>
11)Java abstract class 和 interface
查看>>
使用xrdp或Xmanager 远程连接 CentOS6
查看>>