[英]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關鍵字更改為static
或static 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";
}
}
}
如果您想知道constant
和static 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.