2009-06-03 8 views
0

Je souhaite conserver une variable entre les publications, donc j'écris un accesseur pour le mettre dans viewstate. Lequel d'entre eux est le meilleur moyen d'y accéder? Ou y a-t-il une meilleure option?Syntaxe pour accéder aux variables dans viewstate

Option 1:

private int Status 
{ 
    get 
    { 
     try 
     { 
      return (int)ViewState[@"__Status"]; 
     } 
     catch 
     { 
      return 0; 
     } 
    } 
    set 
    { 
     ViewState[@"__Status"] = value; 
    } 
} 

Option 2:

private int Status 
{ 
    get 
    { 
     if (ViewState[@"__Status"] is int) 
     { 
      return (int)ViewState[@"__Status"]; 
     } 
     else 
     { 
      return 0; 
     } 
    } 
    set 
    { 
     ViewState[@"__Status"] = value; 
    } 
} 

Merci

Edit: J'utilise C# 2.0

Répondre

4

est ici la façon que je tends à le faire:

private int Status 
{ 
    get { return (ViewState["MYSTATUS"] != null) ? (int)ViewState["MYSTATUS"] : 0; } 
    set { ViewState["MYSTATUS"] = value; } 
} 
+0

J'ai oublié cette méthode, je l'ai déjà utilisée - en essayant de rendre mon code plus cohérent .. Comme la variable viewstate ne sera lue/changée que par cet accesseur, la distribution explicite (sinon null) devrait être bonne. Merci. – Nick

1

Eh bien, l'option 2 ne compilera pas, mais je pense que c'est la bonne direction. ;-) Essayez de ne pas utiliser une exception pour cela. Inspectez la variable ViewState à la place.

+0

Oups, erreur stupide. Corrigé, merci. – Nick

0

Pas exactement une réponse, est-il raisonnable de supposer que nulle est le même que 0. Pourquoi ne pas utiliser int? et le type de propriété, je pense que vous pourriez faire quelque chose comme ceci:

public int? MyProperty 
{ 
    get 
    { 
     return ViewState["status"] as int?; 

    } 
    set 
    { 
     ViewState["status"] = value; 
    } 
} 
+0

Selon les hypothèses que le code est en train de faire, vous pourriez commencer à voir des erreurs si vous laissez la valeur retournée être nulle, ou vous devrez ajouter du code supplémentaire pour vérifier null. – rjzii

Questions connexes