저는 C/C++ 배경에서 왔고 C#에서 몇 가지 일을하는 데 어려움을 겪고 있습니다. 내 문제는 바로 지금 내가 C++에서 작동하는 static
키워드가 필요하다는 것입니다. 그래서 속성은 C#이하는 클래스의 모든 인스턴스에 대해 전역 적입니다. 하지만 내가 원하지 않는 것은 C# (/ ASP.NET)의 지속성입니다. 정적 속성을 전역으로 실행하려면 현재 실행중인 페이지의 클래스 인스턴스 만 필요합니다.C# 비 지속적인 '정적'키워드?
어떻게이 작업을 수행 할 수 있습니까?
기본적으로이 이름은 현재 실행중인 페이지에서만 고유해야하는 고유 한 이름 지정입니다. 정적 속성이 지속되면 트래픽이 많은 기간에 정수 롤오버가 발생할 확률이 훨씬 높아져 같은 값이 두 번 사용 될 수 있습니다.
사람이 다음
static int i=0;
page_load...{
lbl.Text=i;
i++;
}
있는 페이지에 가면처럼 그들은 0을 얻을 것이며, 다른 사람이 같은 페이지에 가면 그들은 또한 0을 얻을 것입니다 그러나 그것은이다 그래서 또한 정적 특성을 갖는 모든 반원들에게 똑같이 적용된다.
간단한 해결책은 길게 사용하는 것입니다. 64 비트 값은 언제든지 롤오버되지 않습니다. 솔직히 32 비트 정수도 의심 스럽습니다. 여전히 40 억 건이 요구됩니다.나는 당신의 위치가 평균 세션 기간 도중 많은 방문을 생성 한 ㄴ다는 것을 의심한다. – jalf
아마 사실입니다. "페이지를 요청할 때마다이 숫자가 100 회 이상 증가 할 수 있다면 매우 좋은 결과가 발생할 수 있기 때문에 결코 많은 사람들이 없을 것"이라고 가정하는 것은 결코 바람직하지 않습니다. – Earlz
. 페이지 당 숫자 일지라도 페이지가 자주 요청 될 경우 오버플로가 발생할 수 있습니다. 트릭은 합리적인 가정을하는 것입니다. 페이지가 얼마나 자주 요청 되든 64 비트 정수 *는 오버플로되지 않습니다 *. 나노초마다 증가시킬 수 있고, 584 년 동안 감싸지 않을 것입니다. – jalf