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

Aym*_*ahi 16 c# delegates reference 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);   
        }
Run Code Online (Sandbox Code Playgroud)

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

更新

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

var d3 = new MyDel(out fun);
Run Code Online (Sandbox Code Playgroud)

小智 1

看来,在这种情况下,通过 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);
    }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述