2010-03-08 3 views

Répondre

3

La propriété Contenu est la valeur par défaut pour l'application, donc lorsque vous utilisez:

Application["temp"] = 8; 

sous le capot, le code ci-dessus sera modifié pour appeler Application.Contents["temp"] = 8.

EDIT: Je viens d'utiliser Reflector et comme Greg l'a souligné, la propriété Contents renvoie juste une référence à l'objet HttpApplicationState actuel. Je ne sais pas si ma réponse est strictement correcte dans ce cas - quelqu'un peut-il vérifier cela?

EDIT: OK, j'ai découvert que lorsque vous appelez Application["temp"] = 8; ou Application.Contents["temp"] = 8;, il appelle réellement HttpApplicationState.Item. Regardez cette IL:

.method family hidebysig instance void Page_Load(object sender, class [mscorlib]System.EventArgs e) cil managed 
{ 
    .maxstack 8 
    L_0000: nop 
    L_0001: ldarg.0 
    L_0002: call instance class [System.Web]System.Web.HttpApplicationState [System.Web]System.Web.UI.Page::get_Application() 
    L_0007: ldstr "Key" 
    L_000c: ldc.i4.8 
    L_000d: box int32 
    L_0012: callvirt instance void [System.Web]System.Web.HttpApplicationState::set_Item(string, object) 
    L_0017: nop 
    L_0018: ldarg.0 
    L_0019: call instance class [System.Web]System.Web.HttpApplicationState [System.Web]System.Web.UI.Page::get_Application() 
    L_001e: callvirt instance class [System.Web]System.Web.HttpApplicationState [System.Web]System.Web.HttpApplicationState::get_Contents() 
    L_0023: ldstr "Key" 
    L_0028: ldc.i4.8 
    L_0029: box int32 
    L_002e: callvirt instance void [System.Web]System.Web.HttpApplicationState::set_Item(string, object) 
    L_0033: nop 
    L_0034: ret 
} 
+0

+1 pour l'utilisation du réflecteur – iTayb

4

Le but de la propriété « Contenu » est juste pour retourner un reference to the HttpApplicationState object.

Il retourne juste this, donc vous pouvez en théorie faire Application.Contents.Contents.Contents.Contents["temp"] = 8; et il ferait la même chose.

Il suffit d'utiliser Application["temp"] = 8;.

+1

La question suivante est "à quoi sert cette fonctionnalité, vraiment?" – Greg

+1

Indexation facile. Je suppose qu'ils voulaient juste faire ressembler et sentir comme Session. – womp