只能設置那些在靜態構造函數,所以無論是:
public static class SessionInformation
{
private static readonly string UserName = "something";
private static readonly string PluginID = "something else";
private static readonly string SessionID = "some session";
}
或
public static class SessionInformation
{
static SessionInformation()
{
UserName = "something";
PluginID = "something else";
SessionID = "some session";
}
}
不,這不是存儲會話信息像這樣的:)這個問題是個好主意是,你幾乎不能控制這些值是什麼時候分配的,因爲靜態成員實際上相當複雜。更重要的是,你幾乎無法改變它們。因此,像HttpContext
這樣的類不使用靜態字段,而是通過靜態屬性(如HttpContext.Current
)訪問的正常實例。
更實際的方法是使用某種單例模式,讓您更好地控制賦值的時間,並允許您將它們作爲參數傳遞。然後,您將只讀域,但從外部分配(一次)。
而且,有可能是一個更好的解決方案,如果您不是專注於完成只讀的,例如:
public static class SessionInformation
{
private static bool hasBeenSet = false;
public static string UserName { get; private set; }
public static void SetValues(string userName)
{
if (hasBeenSet) return;
UserName = userName;
hasBeenSet = true;
}
}
這確實幾乎你想要什麼,而不readonly
領域 - 他們是有效只讀從外面,但是。
(注意,這是一個簡單的舉例說明的樣品,它應該是更穩健,特別是在多線程環境)
沒有。我認爲OP會尋求爲類 –
提供這些值。信息是動態的。 – Ahsan
@operation這意味着你不能使用靜態只讀,簡單明瞭。 – Luaan