.NET开发人员对条件运算符的看法是什么?

Shi*_*iva 1 .net c# ternary-operator conditional-operator

我真的很喜欢C#中的条件运算符.它使我的生活更容易编写如下的逻辑:

public  string FormattedFileName
    {
        get
        {
            return string.Format("{0}_{1}_{2}_{3}.xls", 
            DateTime.Now.Month.ToString().Length == 1 
             ? "0" + DateTime.Now.Month.ToString()
             : DateTime.Now.Month.ToString(), 
            DateTime.Now.Day.ToString().Length == 1 
             ? "0" + DateTime.Now.Day.ToString()
             : DateTime.Now.Day.ToString(), 
            DateTime.Now.Year.ToString(), 
            "DownLoaded_From_Clients");
        }
    }
Run Code Online (Sandbox Code Playgroud)

当然,这意味着我失去了代码的可读性.无论如何,我只是好奇其他开发人员对这种编写代码的方法的看法.谢谢.我同样赞赏消极和积极的评论.

Dan*_*nas 63

喜欢它 ?使用它:不要

// if (Like it) then (Use it) else (Don't)
Run Code Online (Sandbox Code Playgroud)

  • (喜欢它) ?使用它:不要 (5认同)
  • 简洁明了. (2认同)

kvb*_*kvb 20

当您需要它时,三元运算符是非常宝贵的.但是,我认为通常有更好的方式来表达自己.在您给出的示例中,为什么不使用完全符合您要求的格式字符串:"{0:00}_{1:00}_{2}_{3}.xls",允许您显着简化代码?


Pau*_*ams 10

如果你想让它更加可读,你可以随时将调用分解为getCurrentMonth(),getCurrentYear,getCurrentDay调用....


Sam*_*ron 10

你的例子是滥用条件运算符,

它可以用这种方式表达得更清楚:

public string FormattedFileName
{
    get {
       return DateTime.Now.ToString("MM_dd_yyyy") +
          "_DownLoaded_From_Clients.xls";
    }
}
Run Code Online (Sandbox Code Playgroud)

我发现条件运算符非常有用并经常使用它.如果使用得当,它可以通过使代码更简洁来帮助简化代码.

一般来说,我会避免在同一个语句中链接多个条件,它很快就会变得非常混乱,从而导致代码无法维护.

我也找到了?非常有用,并且经常发现可以很容易被替换的三元组.

例如:

a == null? "empty" : a

可以替换为:

a ?? "empty"


jas*_*ldo 9

漫画家伙说."最糟糕的是使用三元运算符."


Jam*_*mie 5

可读性可以通过使用缩进,空白来实现,并且如Dave所说,评论.


Nei*_*l N 5

我个人的经验法则是,如果三元组的作用显而易见,那就没关系了.如果它被塞进一行只是因为编码器可以使用三元组,那么它应该是一个括号if语句.