1

最も効率的で (主観的に) 最も読みやすいのはどれですか? (別の開発者が 2 番目のオプションを書いたので、以下の最初のオプションと一致するように変更する正当な理由があることを確認したい)

Pen pen = Pens.Red;
if (highlight)
    pen = new Pen(Color.Red, 3.0f);

また

Pen pen;
if (highlight)
    pen = new Pen(Color.Red, 3.0f);
else
    pen = Pens.Red;

わずかな違いしかないことはわかっていますが、文字通り可能な限り高速である必要がある描画アルゴリズムがあります。少しずつでも役に立ちますように。いいえ、別の言語を使用して描画を処理することは、現時点ではオプションではありません。

助けてくれてありがとう!

4

2 に答える 2

2
var pen = highlight ? highlightPen : Pens.Red;


static readonly Pen highlightPen = new Pen(Color.Red, 3.0f);
于 2012-07-20T00:04:31.353 に答える
2

ここでは「パフォーマンス」に問題はありません。パフォーマンスの問題が疑われる場合は、ベンチマーク、ベンチマーク、ベンチマーク(実際の使用シナリオ) を参照してください。

いずれにせよ、私の好みは次のとおりです。

var pen = highlight
  ? new Pen(Color.Red, 3.0f)
  : Pens.Red;

しかし、上記の 2 つのうち、デフォルト値のない方を好みますが、「パフォーマンス」のためではありません。そうするのは、値設定パスの少なくとも1 つが確実に実行されるように C# コンパイラに依存できるためです。(または、割り当てられていないローカル変数の使用に関するコンパイル エラーがスローされます)。

(そうです、これは初期値が割り当てられた場合にも当てはまりますが、実行パスの1 つが実際に実行されることを保証することが望ましい、より複雑な状況ではうまくいきません。したがって、実用的な場合は一貫性を選択します。)

ハッピーコーディング!

于 2012-07-19T23:47:14.363 に答える