簡體   English   中英

將條件值分配給靜態類的類成員

[英]Assign Conditional Value to class member of static class

這是我的課:

namespace My.Core
{
    public static class Constants
    {
        public const string Layer_ver_const = "23";

        public const string apiHash_const = "111111";
    }
}

現在我想為apiHash_const設置條件值。
意思 :

if(Layer_ver_const == "23")
{
  apiHash_const = "111111";
}
else if(Layer_ver_const == "50")
{
  apiHash_const = "222222";
}
else
{
  apiHash_const = "333333";
}

我怎樣才能做到這一點?

恐怕您在運行時無法做到這一點。 但是您始終可以將constant關鍵字更改為staticstatic readonly ,此代碼將起作用。

public static class Constants
{
    public const string Layer_ver_const = "23";

    public static readonly string apiHash_const;

    static Constants()
    {
       if(Layer_ver_const == "23")
       {
         apiHash_const = "111111";
       }
       else if(Layer_ver_const == "50")
       {
         apiHash_const = "222222";
       }
       else
       {
         apiHash_const = "333333";
       }
    }
}

如果您想知道constantstatic readonly檢查之間的區別,請訪問以下鏈接:

靜態只讀與常量

我建議將它們轉換為只讀字段,並將其設置在構造函數中

常量是另一種野獸。 在項目中聲明常量后,引用該常量的所有其他項目將保留該常量的值,直到您重建項目為止。 因此,更改常數不是您要執行的操作。

將它們設置為readonly,並在構造函數內部進行設置。

正如其他答案所指定的那樣,您可能需要一個readonly字段。 您甚至可以使用屬性。 盡管如此,有可能具有場const ,通過使計算它的常量表達式整個表達式:

public const string Layer_ver_const = "23";
public const string apiHash_const = 
    Layer_ver_const == "23" ? "111111" :
    Layer_ver_const == "50" ? "222222" :
    "333333"
;

這僅是因為我們可以構造一個簡單的表達式來分配apiHash_const 在更復雜的情況下,您必須滿足一個readonly字段的要求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM