Есть ли разница между передачей функции делегату по ссылке?
Я столкнулся с этим фрагментом кода С#, который использует делегаты и передает функцию делегату по ссылке...
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);
}
Компилятор не жаловался и прекрасно строил проект. Я не нашел никакой разницы во время выполнения некоторых тестовых примеров, не делает ли этот синтаксис какой-то разницей, чем обычный синтаксис?
Update
В качестве InBetween, похоже, что этот синтаксис также действителен (и это делает еще меньше смысла)
var d3 = new MyDel(out fun);
Ответы
Ответ 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);
}
![введите описание изображения здесь]()