回 帖 发 新 帖 刷新版面

主题:有谁知道这两条语句的区别吗?

using System;
delegate void Printer(string t);
class TestClass
{
    static void Main()
    {
        Printer p = new Printer(TestClass.DoWork);
    //  Printer  p = TestClass.DoWork;   如果把上面一条改为这样也行的,只是少了"new Printer"
        p("hello");
        Console.ReadKey ();
    }
    static void DoWork(string k)
    {
        System.Console.WriteLine(k);
    }
}

//那么第二条语句少了new Printer也行的吗?

回复列表 (共8个回复)

沙发

一个是新建一个实例,而另一个是直接获取函数指针。

板凳


那么新建一个实例与直接获得函数指针有什么区别吗?

既然直接获得函数指针也可以,那为什么还要新建一个实例呢?

楼上的帮我再解答下好吗?谢谢!

3 楼

新建一个实例就是在堆上新分配一块内存,而获得函数指针就是引用原内存区域。

4 楼

好的 太谢谢了!!

5 楼

那只要引用原内存区域就行了,为什么要新建实例呢, 不是浪费内存吗?

6 楼

引用和新建显然很有区别,需要新建的时候(比如不想影响那个实例)自然不应引用

7 楼

用new创建的实例,当不再需要的时候,
系统会自动销毁其所占用的内存.....

8 楼

那这个实例除了包含这个函数指针外是否还包含其它的东西呢?

我来回复

您尚未登录,请登录后再回复。点此登录或注册