Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “哪个更好?”;“如果声明”;在C中使用#_C#_Readability - Fatal编程技术网

C# “哪个更好?”;“如果声明”;在C中使用#

C# “哪个更好?”;“如果声明”;在C中使用#,c#,readability,C#,Readability,这两种方法都有效,但以下哪种方法更好: PlaceHolder PH = ctl.PlaceHoldNu == 1 ? (PlaceHolder)Page.Master.FindControl("PlaceHolder1") : (PlaceHolder)FindControl("PlaceHolder" + ctl.PlaceHoldNu); 或 最好的是你喜欢用的那种 它们将编译成相同的东西,因此这取决于上下文。哪一种方法可以更清楚地说明您想做的事情?另一种解决方案是: PlaceHold

这两种方法都有效,但以下哪种方法更好:

PlaceHolder PH = ctl.PlaceHoldNu == 1 ? (PlaceHolder)Page.Master.FindControl("PlaceHolder1") : (PlaceHolder)FindControl("PlaceHolder" + ctl.PlaceHoldNu);


最好的是你喜欢用的那种


它们将编译成相同的东西,因此这取决于上下文。哪一种方法可以更清楚地说明您想做的事情?

另一种解决方案是:

PlaceHolder PH = ctl.PlaceHoldNu == 1
    ? (PlaceHolder)Page.Master.FindControl("PlaceHolder1") 
    : (PlaceHolder)FindControl("PlaceHolder" + ctl.PlaceHoldNu);

此解决方案使用最少的行数,但保持可读性。

这是一个品味问题。但是,如果它们太长,我更喜欢第二个。但在此之前,我认为这看起来不错:

PlaceHolder PH =
    ctl.PlaceHoldNu == 1
    ? (PlaceHolder)Page.Master.FindControl("PlaceHolder1")
    : (PlaceHolder)FindControl("PlaceHolder" + ctl.PlaceHoldNu);

对于这个例子,我喜欢第一个,因为我觉得它更具可读性和简洁性

比这复杂一点,您的第二种方法将是首选方法


但这和正确的一样,只是你自己的口味。我通常只在作业上使用条件运算符(就像你做的那样),但只有在作业简单易读的情况下才使用

你们作业的长度会让我倾向于第二个,因为它的可读性


基本上,如果你想象自己以前从未看过代码,那么最容易解析的是哪一个。

这纯粹是一个品味问题,因为编译器(启用了优化)很可能会为两者生成相同的IL代码。第一个更简洁,一个(大多数情况下)努力编写不必要冗长的代码。有鉴于此,第一个(在我看来)是最好的。我也想知道。虽然它不是“另一种解决方案”,但这种格式是由Resharper提供的,所以它一定有一定的流行性。
PlaceHolder PH =
    ctl.PlaceHoldNu == 1
    ? (PlaceHolder)Page.Master.FindControl("PlaceHolder1")
    : (PlaceHolder)FindControl("PlaceHolder" + ctl.PlaceHoldNu);