0

是否可以将对象引用传递给共享相同基类的类的方法签名?即,简化:

public class ClassA : System.Web.UI.Control 
public class ClassB : System.Web.UI.Control

在页面中:

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);
}

显然,按原样,这是行不通的,并且在方法调用中强制转换它不是可分配的引用。想法?

4

2 回答 2

4

不,但无论如何你都不需要ref这里。

要设置可见性,以下正是您需要的:

private void SetCurrentView(Control ctrl)
{
  ctrl.Visible = true;
}
于 2013-01-17T16:00:36.003 回答
1

你不需要ref在你的情况下使用。所有不是值类型(char,int等)的东西都将作为引用传递:这意味着变量将指向内存中的同一个对象,因此它将影响同一个实例

不要将通过引用传递的概念与引用类型的概念混淆。这两个概念并不相同。方法参数无论是值类型还是引用类型,都可以通过 ref 进行修改。通过引用传递值类型时没有装箱。

http://msdn.microsoft.com/en-us/library/14akc2c7.aspx

于 2013-01-17T16:03:59.267 回答