3

私は良い C# コードを書くことを学ぼうとしています。あなたのアドバイスが欲しいです。

たとえば、255 より小さい符号なしの数値がある場合、この値はbyte型に収まります。ただし、この値はバイトとしてではなくInt、コンボボックスのインデックスを設定するための値として使用されるため、キャストが必要になります。

私の質問は、優れた C# コードを作成するときに、データ型についてどの程度心配する必要があるかということです。Intキャストを避けるために、この値を として宣言する必要がありますか?

お時間をいただきありがとうございます。

4

7 に答える 7

2

にする必要がある場合はint、 を使用しintます。

データ型は重要ですが、コードの可読性の問題も重要です。あちこちにキャストする必要があると、可読性が低下します。

于 2012-05-23T08:42:00.087 に答える
2

は より広いため、 からbyteへのキャストintは安全です。そのため、データが失われることはありません。intbyte

ただし、変数を として定義しているbyteが、実際にはint常にキャストしているint場合は、自分自身やコードの他の読者を混乱させるだけなので、単に にすることをお勧めします。

于 2012-05-23T08:41:43.527 に答える
0

回答ありがとうございます。互いに補完し合うため、1つの回答を受け入れることができなかったため、グループ化することにしました。

  1. CPU は 32 ビット値で効率的に動作するように設計されています (リンクされた質問)。
  2. 時期尚早の最適化を行う必要はありません。
  3. 常にデータ型をキャストするのは効率的ではありません。
  4. 特定の型の変数を宣言して常にキャストすると、コードの可読性が低下します。
于 2012-05-23T10:59:36.680 に答える
0

答えはイエスです。

それほど大きくない整数値を使用する必要がある場合は、必要がない限り、他の型の使用/キャストを避けるint必要があります。このデータを送信している限られた帯域幅のように。

于 2012-05-23T08:43:13.967 に答える
0

Design of your data types should not depend on way how they displayed by controls (or saved to data storage). If I see property of type byte then it tells me what range of values my data type expects. E.g. Color class has self-descriptive properties R,G,B of type byte.

Also do not do premature optimizations - if it become performance problem (I have doubts that casting from byte to int could have big influence on system performance) then you can optimize problem code later.

BTW casting from byte to int is implicit, so you don't need to do it manually:

comboBox.SelectedIndex = myObj.ByteProperty;
于 2012-05-23T08:41:21.247 に答える
0

データ型付けは、優れたコーディングの基本です。これにより、コンパイラーは多くのチェックを行うことができるため、バグを排除/強調表示するのに役立ちます。

あなたの例では、 ushort を使用して数値を保存できますが、メモリに非常に敏感なアプリケーションを作成している場合を除き、多くのライブラリ呼び出しでパラメータを整数に戻す必要があるため、int を使用することをお勧めします。(これにより、定数の型キャストが原因でコードが読みにくくなり、効率も低下する可能性があります)

于 2012-05-23T08:45:06.557 に答える
0

私たちのコンピューターで現在利用可能なメモリの量では、byte または int のどちらかを選択するとき、メモリはもはや問題ではありません。

int の方がはるかに扱いやすいと付け加えておきます。

于 2012-05-23T08:46:30.420 に答える