실제로 어떤 경우에는 차이가 있지만 힘들고 종종 관련성이없는 것처럼 보입니다.
예제는 의미 바이트 ViewState
크기를 표시하는 68 바이트 ViewState
에 어떤 결과가없는 페이지 :
는 아래의 경우를 참조하십시오. 그 외 모든 것은 ViewState
에 수동으로로드 된 콘텐츠입니다.
ViewState
에 0..9999의 문자열 값을 넣는 것.
string x = string.Empty;
for (int i = 0; i < 10000; i++)
{
if (i != 0) x += ",";
x += i;
}
//x = "0,1,2,3,4,5,6,7,8...9999"
ViewState["x"] = x;
//Result = 65268 bytes
및 배열
하십시오 65,260 바이트
ViewState
결과 상기
string[] x = new string[10000];
for (int i = 0; i < 10000; i++)
{
x[i] = i.ToString();
}
ViewState["x"] = x;
//Result = also 65268 bytes
두 경우는 오버 라이딩 SaveViewState
방법에 돌아온. ViewState
개체에서로드하는 것보다 8 바이트 더 적습니다. 이 페이지 SaveViewState
방법 오버라이드 (override)하는 경우
//104 bytes
ViewState["x"] = "1,2,3,4,5,6,7,8,9,10"
// 108 bytes
ViewState["x"] = new string[] { "1", "2", "3" , "4", "5", "6", "7", "8", "9", "10"}
는 :
그러나, 다른 경우에는 어떤 경우에는 ViewState
으로
protected override object SaveViewState()
{
//100 bytes
return new string[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" };
//100 bytes
return "1,2,3,4,5,6,7,8,9,10";
}
가 암호화되고 Base64 encoded,
을 그것은 단지 문제가 될 수 문자열 인코딩 : 두 개의 다른 객체가 페이지에 두 개의 다른 출력을 생성합니다.