2012-01-17 2 views
0

Оба эти методы работают, но что лучший способ, чтобы использовать из следующего:Что лучше «если заявление» для использования в C#

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

Или

  PlaceHolder PH; 
        if (ctl.PlaceHoldNu == 1) 
         PH = (PlaceHolder)Page.Master.FindControl("PlaceHolder1"); 
        else 
         PH = (PlaceHolder)FindControl("PlaceHolder" + ctl.PlaceHoldNu); 
+0

Это просто вопрос вкуса, поскольку компилятор (с включенной оптимизацией), скорее всего, будет производить тот же IL-код для обоих. – Nuffin

+0

Первое более красноречиво, и один (большую часть этого времени) стремится писать код, который не является излишне подробным. В свете этого первое (на мой взгляд) лучшее. – MoonKnight

ответ

6

Другим решением было бы:

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

Это решение использует минимум линий, но сохраняет читаемость.

+0

Мне интересно, почему это было приостановлено? – Aphelion

+0

Мне тоже интересно. Хотя это не «другое решение», этот формат предлагается Resharper, поэтому он должен иметь некоторую популярность. –

0

Лучших один это тот, который вы предпочитаете использовать.

Они скомпилируются до одного и того же, так что это зависит от контекста. Какой из них делает цель того, что вы пытаетесь сделать более понятным?

4

Это вопрос вкуса. Однако, если они затянутся слишком долго, я предпочел бы второй. Но прежде чем это произойдет, я думаю, что это выглядит красиво:

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

Почему это вниз? :/Пожалуйста, оставьте комментарий. –

0

В этом случае я, как первый, так как я чувствую, что это более понятным и лаконичным.

Немного сложнее этого, и ваш второй подход будет предпочтительным.

Но это так же, свой собственный вкус, чем правильно

0

Я обычно использую только условный оператор на назначениях (как вы сделали), но только тогда, когда они просты и легко читать.

Длина ваших заданий заставит меня одобрить второе для удобства чтения.

В основном, что проще всего проанализировать, если вы воображаете, что раньше никогда не смотрели код.