Console.WriteLine(
"x is Animal : "
+ (x is Animal).ToString());
Console.WriteLine(
"x is Vegetable : "
+ (x is Vegetable).ToString());
}
public void Switcharoo(ref Thing pValue)
{
pValue = new Vegetable();
}
输出结果:
x is Animal : False
x is Vegetable : True
如果不用ref输出结果刚好相反。
是因为用了ref之后参数pValue指向栈上的变量x,执行Switcharoo方法后x的通过变量pValue指向了new Vegetable()的地址。而不用ref参数pValue只是栈上的变量x的一个复制。执行Switcharoo方法之后,pValue变成了new Vegetable()的地址,而x依然指向animal这个对象。