我可以在C#中使用三元运算符运行多个语句吗?
我有一个名为我可以在C#中使用三元运算符运行多个语句吗?,c#,C#,我有一个名为MyObject的对象。这有一个属性名 我可以像下面这样使用三元运算符吗 string validSite = 'yahoo'; string invalidSite ='abc'; MyObject obj = new MyObject() 我想在真实条件下执行一些语句 valid ? ({ validSite; obj.Name = 'Test';}) : invalidSite 有没有办法做到这一点,或者我是否需要使用if-else?注意,以下是上述情况的可能解决方案,但
MyObject
的对象。这有一个属性名
我可以像下面这样使用三元运算符吗
string validSite = 'yahoo';
string invalidSite ='abc';
MyObject obj = new MyObject()
我想在真实条件下执行一些语句
valid ? ({ validSite; obj.Name = 'Test';}) : invalidSite
有没有办法做到这一点,或者我是否需要使用if-else?注意,以下是上述情况的可能解决方案,但不建议使用。因为我完全同意使用普通的
if…else…
语句,而不是一行
,如果您的场景像您在问题中提到的那样简单
尽管如此,这个答案将有助于了解实现它的可能方法,并且可以在代码最适合的地方使用它
您可以使用
Func
在newfunc(…)
中定义您的语句,并立即使用()
调用它
我建议您使用,如果您需要
相同的代码
多次重复,则可以提供代码的可重用性
,或者如果符合您的要求,您可以简单地使用if…else…
如果您使用的是C#7
或更新版本,则可以使用。在这个局部函数中,您还可以使用父函数中的所有局部变量
public void function Test()
{
var site = valid ? GetSite() : invalidSite;
string GetSite()
{
validSite;
obj.Name = 'Test';
return obj.Name;
}
}
如果,为什么不使用普通的
?当表达式变得复杂时可读性更强。可读性和可维护性比短代码好。请使用if
语句。对于投票人,您能提供解决方案错误的详细信息吗?我不知道如何告诉未来的读者“请不要这样做”。@Sinatr,谢谢,我感谢您的评论。
var site = valid ? new Lazy<string>(() => { validSite; obj.Name = 'Test'; return obj.Name; }).Value : invalidSite;
public void function Test()
{
var site = valid ? GetSite() : invalidSite;
string GetSite()
{
validSite;
obj.Name = 'Test';
return obj.Name;
}
}