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、etc`)以外のものはすべて参照として渡されます。これは、変数がメモリ内の同じオブジェクトを指すため、同じインスタンスに影響を与えることを意味します。

参照渡しの概念と参照型の概念を混同しないでください。2つの概念は同じではありません。メソッドパラメータは、値型か参照型かに関係なく、refによって変更できます。参照によって渡される場合、値型のボックス化はありません。

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

于 2013-01-17T16:03:59.267 に答える