这是我的班级:
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";
}
我该怎么做?
答案 0 :(得分:3)
我担心你不能在运行时这样做。但您可以随时将常量关键字更改为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
之间的区别,请查看以下链接:
答案 1 :(得分:1)
我建议将它们转换为只读字段,并将它们设置在构造函数
中常数是一种不同的野兽。在项目中声明常量后,引用它的每个其他项目将保留常量的值,直到重建项目为止。因此,改变常数不是你想要做的。
使这些只读,并在构造函数内部设置它们。
答案 2 :(得分:1)
正如其他答案所指定的那样,您可能需要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
字段。