2009-01-20 6 views
2

Je voudrais savoir comment puis-je PaaS page en Ref paramètre à une fonctionComment passer la page en tant que paramètre ref à une fonction

C'est ce que je veux faire

 

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


    } 
} 
 

Répondre

4

Vous ne pouvez pas transmettre une propriété par référence en C#. Pourquoi voulez-vous passer page par référence dans ce cas?

En VB, vous pouvez passer une propriété par référence, et l'équivalent dans ce cas serait:

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

Etes-vous vraiment sûr que vous voulez faire?

Je suppose que vous ne voulez pas vraiment le transmettre par référence, et vous êtes juste un peu confus au sujet du passage de paramètre. Voir my article on the topic pour plus d'informations.

+0

d'oh! tout comme j'ajoute le même lien dans ;-p –

+0

Je ne vais pas m'objecter à deux liens vers le même article :) –

3

Pourquoi avez-vous vouloir le passer ref? Il me semble qu'une passe régulière devrait faire l'affaire. cela passe la référence par valeur - ce qui est ce que vous voulez (sauf si vous créez une nouvelle page ...).

En outre, n'est pas "this" le Page? Tu ne peux pas juste:

SetupUserPermission.SetupUserRights(this, ...); 

SetupUserRights prend un Page?

Voir aussi: La page de Jon Skeet sur parameter passing in C#; cela pourrait corriger quelques idées fausses (indice: Page est un type de référence (une classe)).

0

Sauf si vous avez besoin de modifier la référence de cette page.Page dans les appels en aval et que la référence reflète les changements en amont, il n'y a aucune raison de passer cela par réf. De toute façon, je ne pense pas que cela fonctionne avec les propriétés, en particulier obtenir seulement celles-ci.Page.

Questions connexes