是否可以将对象引用传递给共享相同基类的类的方法签名?即,简化:
public class ClassA : System.Web.UI.Control
public class ClassB : System.Web.UI.Control
在Page:
private void SetCurrentView(ref Control ctrl)
{
ctrl.Visible = true;
}
protected void Page_Load(object sender, System.EventArgs e)
{
aClass = new ClassA();
bClass = new ClassB();
SetCurrentView(ref aClass);
SetCurrentView(ref bClass);
}
显然,按原样,这不起作用,并且在方法调用中将其强制转换将不是可分配的引用。想法?
答案 0 :(得分:4)
不,但无论如何你都不需要ref
。
要设置可见性,以下内容完全符合您的要求:
private void SetCurrentView(Control ctrl)
{
ctrl.Visible = true;
}
答案 1 :(得分:1)
在您的情况下,您不需要使用ref
。所有非值类型(char,int
等)的内容都将作为引用传递:它表示该变量将指向同一对象的内存,因此它将影响同一个实例
不要将引用传递的概念与引用类型的概念混淆。这两个概念不尽相同。无论是值类型还是引用类型,都可以通过ref修改方法参数。通过引用传递时,没有值类型的装箱。