这段小代码错哪了

这段小代码哪里错了
请问这段小代码哪里错了?我初学者

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 委托
{
    class Program
    {
        delegate int Pro(ref int a);
        static void Mu( Pro liweike)
        {
            int dd = 5;
            Console.WriteLine(liweike(dd));
            Console.WriteLine("成功"); 
        }
        static int Su(ref int b)
        { return 3; }
        static void Main(string[] args)
        {
            
            Pro liwei;
            liwei = Su;
            Mu(liwei);
        }
    }
}
------解决思路----------------------
Console.WriteLine(liweike(ref dd));