簡體   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