私はクラスを持ち、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それは当時のことです...ページがリロードされるたびにどのようにリセットされないのか分かりません。私は思ったようにコンパイル時に一度設定されますか? –
これは、あなたのフィールド(プロパティではありません)は、メンバを使用して初めてクラスを参照するとき、またはクラスが初めてインスタントされるときに、ただ初期化されることを意味します。これは、通常1回だけ発生します。 – HimBromBeere