码迷,mamicode.com
首页 > 其他好文 > 详细

静态方法和实例方法对于委托的区别

时间:2020-04-15 21:16:26      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:oid   color   委托   的区别   一个   instance   ram   gre   lte   

当一个类的实例的方法被赋给一个委托对象时,在上下文中不仅要维护这个方法,还要维护这个方法所在的实例。System.Delegate 类的Target属性指向的就是这个实例。举个例子:

class Program {
    static void Main(string[] args) {
        X x = new X();
        ProgressReporter p = x.InstanceProgress;
        p(1);
        Console.WriteLine(p.Target == x); // True
        Console.WriteLine(p.Method); // Void InstanceProgress(Int32)    
  } static void WriteProgressToConsole(int percentComplete) { Console.WriteLine(percentComplete+"%"); } static void WriteProgressToFile(int percentComplete) { System.IO.File.AppendAllText("progress.txt", percentComplete + "%"); } } class X { public void InstanceProgress(int percentComplete) { // do something
} }

但对于静态方法,System.Delegate 类的Target属性是Null,所以将静态方法赋值给委托时性能更优。

静态方法和实例方法对于委托的区别

标签:oid   color   委托   的区别   一个   instance   ram   gre   lte   

原文地址:https://www.cnblogs.com/createwell/p/12708148.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!