Application["temp"] = 8;
은 8
값을 temp
으로 설정해야합니다.Application [ "Key"]와 Application.Contents [ "Key"]의 차이점은 무엇입니까?
그러나, 그래서 Application.Contents["temp"] = 8;
그래서이 둘 사이의 차이가 무엇입니까?
대단히 감사합니다.
Application["temp"] = 8;
은 8
값을 temp
으로 설정해야합니다.Application [ "Key"]와 Application.Contents [ "Key"]의 차이점은 무엇입니까?
그러나, 그래서 Application.Contents["temp"] = 8;
그래서이 둘 사이의 차이가 무엇입니까?
대단히 감사합니다.
목차 속성을 사용 그렇게 할 때, 응용 프로그램에 대한 기본값입니다
Application["temp"] = 8;
후드 아래, 위의 코드는 Application.Contents["temp"] = 8
를 호출 변경됩니다.
편집 : 방금 Reflector를 사용했고 Greg가 지적한대로 Contents 속성은 현재 HttpApplicationState
개체의 참조를 반환합니다. 내 대답이이 경우 정확하게 맞는지 확실하지 않습니다. 누군가이를 확인할 수 있습니까?
편집 : 확인, 알았습니다. Application["temp"] = 8;
또는 Application.Contents["temp"] = 8;
을 호출하면 실제로 HttpApplicationState.Item이 호출됩니다.
.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
}
은 "내용"속성의 목적은 단지 reference to the HttpApplicationState object을 반환하는 것입니다 :이 IL을 확인하십시오.
그냥 this
을 반환하므로 이론상으로는 Application.Contents.Contents.Contents.Contents["temp"] = 8;
을 수행 할 수 있으며 동일한 작업을 수행 할 수 있습니다.
그냥 Application["temp"] = 8;
을 사용하십시오.
반사경을 사용하는 경우 +1 – iTayb