클래스가 있고 UID를 클래스 속성으로 설정하는 이유는 프로그램 전체에서 여러 메서드에서 사용되므로 값을 전달하지 않아도되기 때문입니다. 내가 얻는 이슈는 context.Response.Write(uid)
을 실행하고 페이지를 새로 고칠 때마다 매번 같은 값을 얻는다.C# 클래스 속성이 캐시되고 있습니까?
createRandomString()
을 context.Response.Write(createRandomString())
으로 이동하면 새로로드 할 때마다 새 UID가 표시됩니다.
저는 C#을 사용하고 PHP 배경을 사용하는 데있어서 매우 새로운데, 이것은 저에게 다소 이상합니다. 클래스 속성을 설정하면 모든 부하가 바뀔 것이라고 생각합니다. 나는 아마도 프로그램이 컴파일 될 때와 관련이 있다고 생각하고 있는데, UID는 영구적으로 설정되어 여전히 의미가 없습니다. 속성이 설정지고
코드 :
public class Emailer : IHttpHandler {
// Define UID
static string uid = createRandomString();
CreateRandomString 번호 :
public static string createRandomString() {
Guid g = Guid.NewGuid();
string GuidString = Convert.ToBase64String(g.ToByteArray());
GuidString = GuidString.Replace("=", "");
GuidString = GuidString.Replace("+", "");
return GuidString;
}
당신 UID 속성은 정적 속성이므로 한 번만 다시는 액세스 할 때 새로 고쳐로드. – invalidusername
@invalidusername 그것은 그 시절의 한 해였습니다 ... 페이지가 다시로드 될 때마다 어떻게 재설정되지 않는지 나는 알지 못합니다. 내가 생각한대로 편집 할 때 한 번만 설정됩니까? –
또한 클래스가 처음 멤버로 사용되거나 클래스가 처음 인스턴스화 된 경우 클래스가 처음 참조 될 때 필드 (속성은 아님)가 바로 초기화된다는 것을 의미합니다. 이것은 대개 한 번만 발생합니다. – HimBromBeere