我可以在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;
    }
}