委托是引用类型,但在尝试将其传递给方法时仍需要 ref 关键字。
这让我想起了需要在方法中修改 ref 的字符串,因为它们是不可变的,委托是不可变的吗?
这是我的迷你项目:
delegate void MyDel();
static void Main(string[] args)
{
MyDel _del = new MyDel(Idle);
while(true)
{
if(_del != null)
_del();
int c = Console.Read();
AI(c,ref _del);
Console.Read();
Console.Read();
}
}
}
static void AI(int c, ref MyDel del)
{
if(c == 'a')
{
del = Attack;
}else if(c == 'i'){
del = Idle;
}else if (c == 's'){
del = SwingSword;
}
else if (c == 'w')
{
del = Attack;
del += SwingSword;
}
else {
del = Idle;
}
}
如果没有 ref 关键字,我将回到 swap 方法的情况,即事情只发生在方法内部。
谁能告诉我为什么代表需要通过引用传递?