我想知道如何将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));
}
}
}
答案 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。