C# 使用字符串的字符串插值
下面是一个字符串插值示例。如果C# 使用字符串的字符串插值,c#,string-interpolation,C#,String Interpolation,下面是一个字符串插值示例。如果apple等于apple,则返回yes或no var result = $"{("apple" == "apple" ? "yes" : "no")}"; 我需要做的是分配一个字符串 string text= "{(apple == apple ? yes: no)}"; var result = $"{text}"; 我预计var结果将是yes。因为它类似于上面的代码。但是,我得到的结果是字符串textit self 我的问题是:如何传递类似于“{(apple
apple
等于apple
,则返回yes
或no
var result = $"{("apple" == "apple" ? "yes" : "no")}";
我需要做的是分配一个字符串
string text= "{(apple == apple ? yes: no)}";
var result = $"{text}";
我预计var结果
将是yes
。因为它类似于上面的代码。但是,我得到的结果是字符串text
it self
我的问题是:如何传递类似于
“{(apple==apple?yes:no)}”的字符串,并获得类似yes
或no
的输出?不能。插入的意义-允许在字符串中插入代码的输出。编译器应该知道注入什么。在第二种情况下,string=text=可以包含任何内容,它更多地用于解释器,而不是编译器。现在代码按它应该的方式工作。我知道。不行。插入的意义-允许在字符串中插入代码的输出。编译器应该知道注入什么。在第二种情况下,string=text=可以包含任何内容,它更多地用于解释器,而不是编译器。现在代码按它应该的方式工作。Imho.如果您只想返回“是”或“否”,那么就不需要插值,因为没有什么可插值的。你可以这样做:
var result = something == "apple" ? "yes" : "no";
如果您需要一些连接-换句话说,您必须插入一些内容-您可以这样做:
var something = "apple";
var result = $"Is it an apple? {(something == "apple" ? "yes" : "no")}!";
返回
它是苹果吗?对!
整个条件表达式需要放在括号中
为了可读性,无论如何,将其分解为多个步骤可能是有意义的
var something = "apple";
var yesOrNo = something == "apple" ? "yes" : "no";
var result = $"Is it an apple? {yesOrNo}!";
如果您只想返回“是”或“否”,那么就不需要插值,因为没有什么可插值的。你可以这样做:
var result = something == "apple" ? "yes" : "no";
如果您需要一些连接-换句话说,您必须插入一些内容-您可以这样做:
var something = "apple";
var result = $"Is it an apple? {(something == "apple" ? "yes" : "no")}!";
返回
它是苹果吗?对!
整个条件表达式需要放在括号中
为了可读性,无论如何,将其分解为多个步骤可能是有意义的
var something = "apple";
var yesOrNo = something == "apple" ? "yes" : "no";
var result = $"Is it an apple? {yesOrNo}!";
运行时不会使用$
进行字符串插值。它在编译时进行计算。运行时仅计算大括号之间的表达式
当您希望稍后在运行时执行评估时,需要使用委托:
因为除了字符串本身,没有什么可以插值的
可以传递委托,例如作为函数参数。在运行时不会使用$
进行字符串插值。它在编译时进行计算。运行时仅计算大括号之间的表达式
当您希望稍后在运行时执行评估时,需要使用委托:
因为除了字符串本身,没有什么可以插值的
委托可以传递,例如作为函数参数。这与您所寻找的语法不同,但它可以:
public class yourFruitStand
{
private string yourFruitName;
public bool YourFruitName
{
get
{
return yourFruitName;
}
set
{
yourFruitName = value;
if(yourFruitName == "apple")
{
yesOrNo = true;
}
else
{
yesOrNo = false;
}
}
}
private bool yesOrNo;
public bool yesOrNo
{
get
{
return yesOrNo;
}
set
{
yesOrNo = value;
}
}
}
这与您所寻找的语法不同,但它可以工作:
public class yourFruitStand
{
private string yourFruitName;
public bool YourFruitName
{
get
{
return yourFruitName;
}
set
{
yourFruitName = value;
if(yourFruitName == "apple")
{
yesOrNo = true;
}
else
{
yesOrNo = false;
}
}
}
private bool yesOrNo;
public bool yesOrNo
{
get
{
return yesOrNo;
}
set
{
yesOrNo = value;
}
}
}
你不能,至少不能使用那种特定的语言功能。它不是那样工作的。@Meta Knight它是{(apple==apple?yes:no)}
(可能是我应该将其作为变量文本的输出进行重定相位)。可能的重复。是否有其他方法可以实现此目的?请参阅建议的重复。我认为您可能能够使用FormattableString
获得一些东西,但我个人还没有使用过它。您不能,至少不能使用特定的语言功能。它不是那样工作的。@Meta Knight它是{(apple==apple?yes:no)}
(可能是我应该将其作为变量文本的输出进行重定相位)。可能的重复。是否有其他方法可以实现此目的?请参阅建议的重复。我想您可能可以使用FormattableString
获得一些东西,但我还没有亲自使用它。如果输入字符串仅为“{(apple==apple?yes:no)}”
,该怎么办。然后,我需要输出答案是或否。我是否必须拆分字符串并构建一个等式,如您的示例所示?或者有其他方法可以做到这一点吗?在这种情况下,您将尝试将代码放在字符串文本中,并在运行时对其进行解释。这样的事情是存在的,但它已经偏离了常规,就像试图在运行时动态生成类一样。除非您试图构建一个编译器,否则这几乎肯定是您不想做的事情。如果输入字符串只是“{(apple==apple?yes:no)}”
,该怎么办。然后,我需要输出答案是或否。我是否必须拆分字符串并构建一个等式,如您的示例所示?或者有其他方法可以做到这一点吗?在这种情况下,您将尝试将代码放在字符串文本中,并在运行时对其进行解释。这样的事情是存在的,但它已经偏离了常规,就像试图在运行时动态生成类一样。除非你试图构建一个编译器,否则这几乎肯定是你不想做的事情。