如何将Page作为ref参数传递给函数

时间:2009-01-20 10:27:04

标签: c# asp.net

我想知道如何将Page作为参数设置为函数

这就是我想做的事情

 
  public partial class HomePage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if(!SetupUserPermission.isSessionExpired())
        {
            string UserId = Session["UserId"].ToString();
            SetupUserPermission.SetupUserRights(ref this.Page, Convert.ToInt32(UserId));
        }


    }
}
 

3 个答案:

答案 0 :(得分:4)

您无法通过引用在C#中传递属性。在这种情况下,为什么要通过引用传递Page?

在VB中你可以通过引用传递一个属性,在这种情况下的等价物将是:

Page tmp = Page;
SetupUserPermission.SetupUserRights(ref tmp, Convert.ToInt32(UserId));
Page = tmp;

你真的确定要这样做吗?

我怀疑你真的不想通过引用传递它,而你只是对参数传递感到有些困惑。有关详细信息,请参阅my article on the topic

答案 1 :(得分:3)

为什么要传递它ref?在我看来,定期通行应该做;这会按值传递引用 - 这就是您想要的(除非您要创建新页面......)。

此外,“this”不是Page吗?你不能只是:

SetupUserPermission.SetupUserRights(this, ...);

其中SetupUserRights需要Page

另请参阅:Jon {{}}上的Jon Skeet页面;这可能会解决一些误解(提示:Page引用类型(一个类))。

答案 2 :(得分:0)

除非您需要在下游调用中更改this.Page的引用并使引用反映上游的更改,否则没有理由通过ref传递此内容。无论哪种方式,我认为这不适用于属性,尤其是只有这样的.Page。