C# 条件字符串。整数格式

C# 条件字符串。整数格式,c#,string,format,C#,String,Format,想要检查条件字符串.格式是否可以在C#中基于数字的基值 比如说 对于布尔数据类型 bool rvalue = false; string s = string.Format("{0:X;0;Y}", rvalue.GetHashCode()); 这将返回Y 类似地,是否有可能在string.Format中写入条件,例如ifnumber>2然后打印X,否则打印Y我花了一些时间才理解您试图用该表达式做什么,但我想我现在明白了 我现在能想到的最好的办法是: int number = 3; strin

想要检查条件字符串.格式是否可以在C#中基于数字的基值

比如说

对于布尔数据类型

bool rvalue = false;
string s = string.Format("{0:X;0;Y}", rvalue.GetHashCode());
这将返回Y


类似地,是否有可能在string.Format中写入条件,例如if
number>2然后打印X,否则打印Y
我花了一些时间才理解您试图用该表达式做什么,但我想我现在明白了

我现在能想到的最好的办法是:

int number = 3;
string s = string.Format($"{(number > 2 ? "X" : "Y")}");
或:

但这对我来说更有意义:

int number = 3;
string s = number > 2 ? "X" : "Y";

你可以用以下方法来做

   bool rvalue = false;
                    string s = string.Format("{0:X;0;Y}",
                    rvalue ? 0 : 1);

为什么不直接在前面构建格式字符串:

string format = rvalue ? "0:X" : "0:Y";
var result = myInput.Format(format);
当您有更复杂的条件时,非常清晰且易于扩展:

switch (whateverCondition)
{
    case 1: format = "0:Z"; break;
    case 2: format = "0:X"; break;
    case 3: format = "0:Y"; break;
    default: format = "whatever";
}

相关:。我认为它只适用于正数、负数和零数,它不能检查特定的值。为什么在bool上使用
GetHashcode
?在我看来,你误用了哈希代码,只是因为它有效。hashcode永远不应该在您的软件中的某个地方真正使用。@HimBromBeere是真的,尽管算法是真的,但您永远不应该依赖它的值。您可以检查这个表达式字符串s=string.Format(“{0:X;0;Y}”,rvalue.GetHashCode());-问题是我不能使用格式字符串以外的条件,我不明白这意味着什么@兰吉辛格
switch (whateverCondition)
{
    case 1: format = "0:Z"; break;
    case 2: format = "0:X"; break;
    case 3: format = "0:Y"; break;
    default: format = "whatever";
}