繁体   English   中英

通过ref将函数传递给委托是否有区别?

[英]Is there a difference between passing a function to a delegate by ref?

我遇到了一段使用委托的C#代码,并通过引用将该函数传递给委托......

        delegate bool MyDel(int x);
        static bool fun(int x) {
            return x < 0;
        }
        public static void Main() {
            var d1 = new MyDel(fun);       // what I usually write
            var d2 = new MyDel(ref fun);   
        }

编译器没有抱怨并且建立了项目。 我在运行一些测试用例时没有发现任何差异,这种语法与通常的语法有什么不同?

更新

正如InBetween所提到的,似乎这种语法也是有效的(而且它的意义更小)

var d3 = new MyDel(out fun);

看来,在这种情况下,没有差异通过ref / out / normal-way,我试着看看ILDASM是否有任何区别,但没有区别......

 delegate void MyDel();
 static void Main(string[] args)
    {
        MyDel myDel = new MyDel(Mtd1);
        MyDel d3 = new MyDel(ref Mtd1);
        MyDel d1 = new MyDel(ref Mtd2);
        MyDel d2 = new MyDel(out Mtd3);
    }

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM