以下是一个字符串插值示例。如果apple
等于apple
,则返回yes
,否则返回no
。
var result = $"{("apple" == "apple" ? "yes" : "no")}";
我需要做的是分配一个字符串
string text= "{(apple == apple ? yes: no)}";
var result = $"{text}";
我希望var result
将是yes
。由于其类似于上面的代码。但是,我得到的结果是它自己的字符串text
。
我的问题:如何传递类似于"{(apple == apple ? yes: no)}"
的字符串并获得类似yes
或no
的输出?
答案 0 :(得分:2)
如果只想返回“ yes”或“ no”,则不需要插值,因为没有要插值的内容。您可以这样做:
0 1 2 3 4 5 6
13 12 11 10 9 8 7
如果您需要一些连接-换句话说,您必须插值-您可以执行以下操作:
var result = something == "apple" ? "yes" : "no";
返回
是苹果吗?是的!
整个条件表达式都必须放在括号中。
出于可读性考虑,将它分成几步可能很有意义。
var something = "apple";
var result = $"Is it an apple? {(something == "apple" ? "yes" : "no")}!";
答案 1 :(得分:0)
不能。插值意义-允许将代码输出注入字符串中。编译器应该知道要注入什么。在第二种情况下,字符串= text =可以包含任何内容,更多的是用于解释程序,而不是编译器。现在,代码应以应有的方式工作。恕我直言。
答案 2 :(得分:0)
使用$
进行字符串内插不会在运行时发生。在编译时评估。在运行时仅评估大括号之间的表达式。
如果要在运行时进行以后评估,则需要使用 delegate :
Func<string> textfactory = () => "apple" == "apple" ? "yes" : "no";
var result = $"{ textfactory() }";
或者只是
var result = textfactory();
因为除了字符串本身外没有其他可插值的东西。
代表可以被传递,例如作为函数参数。
答案 3 :(得分:0)
这与您要查找的语法不同,但这可行:
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;
}
}
}