最近有時(shí)間看點(diǎn)書了,把157個(gè)建議在重新看一遍,代碼都調(diào)試一遍。當(dāng)我看到第15個(gè)建議的時(shí)候有些出入,就記錄下來,歡迎大家來探討。
第十五條建議是,使用dynamic簡化反射的使用,沒有說明具體的條件。dynamic的確可以簡化反射的使用,但是性能上并不是不分條件的。
我按著書上的代碼,原封不動(dòng)的敲了一遍,如下:
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 int times = 1; 6 DynamicSample dynamicSample = new DynamicSample(); 7 var addMethod = typeof(DynamicSample).GetMethod("Add"); 8 9 Stopwatch watch1 = Stopwatch.StartNew();10 int result = 0;11 for (int i = 0; i < times; i++)12 {13 result = (int)addMethod.Invoke(dynamicSample, new object[] { 1, 2 });14 }15 Console.WriteLine(string.Format("正常的反射耗時(shí):{0}毫秒", watch1.ElapsedMilliseconds));16 17 Console.WriteLine("正常反射的結(jié)果:"+resu