2009-05-26 9 views
7

C#およびVB.NETには、CLR型にマップされる組み込み型が付属しています。例:int(C#)とInteger(VB)はSystem.Int32にマップされ、long(C#)とLong(VB)はSystem.Int64にマップされます。組み込み型を使用するかどうかを決めるベストプラクティスは何ですか(代わりにSystem。* structs/classesを使用します)。ビルトインタイプ、いつ使用しますか?

+0

私はShawnの答えを選択しました。これは、2つのオプションの中から選択するという確かな根拠を提供するためです。他の答えは単に "それは等しい、どちらかを使用する"と述べています - これは本当に役に立ちません、IMO。もし私が二番目に良い答えを選ぶことができれば、それはリードです。 とにかく、人々が不平を言っているので、もっと答えが来るようにします... –

答えて

14

内蔵タイプのキーワードよりも「System.XYZ"」を明示的に使用する唯一の時間は、非常に特定のサイズの整数型が必要なときです。問題の整数が実際に4、8ビットのフィールドは一緒にパックされている場合)。Int32の代わりintを使用

15

言語の種類(例えば、文字列、int型、char型)、単純にCLR型のエイリアス(可能System.String、システムあるかもしれません.Int32、System.Char)。

これらは互換性があり、もう一方を優先する必要はありません。

EDIT

ポスターは非常によく、両者の間に選択する際に、いくつかの助けを求めました。

彼らは以下の入力を伴うので、個人的に私は、C#言語の種類(整数、文字列、文字など)を選択するをがち- 私はただ怠け者と仮定:)

+0

つまり、彼らはまったく同じものです。 Think:String s = "hi";文字列s2 = s; sとs2は同じ文字列です。 – jjnguy

+0

@jjnguy:これはS&S2の値が等しいことではなく、値を無視します。私は値を保持する型(値ではない)が同一であると言っています。すなわち、文字列s1 = "Hello"; System.String s2 = "World"; s1は、その値が異なるという事実にかかわらず、s2と同じTYPEです。 –

37

私はほぼ常に内蔵を使用int/short/longなどのエイリアスで指定します。読みやすく、システムをインポートしたり、System.Int32をどこにでも入力する必要はありません。

これらの言語は明確に定義されており、具体的な意味を与えているため、害はありません。しかし、これは100%個人的な選択です。

私が明示的にInt32、Int16などを使用する場所は、バイナリストレージや転送、特にカスタムバイナリ形式からのものであると言われています。この場合、各メンバーの明示的なビットサイズをファイルに出入りさせることで、コードをより読みやすく理解しやすくなります。

2

"int"と "Int32"(とその他)を使用することはまったく同じです。 Typicalyはキーワード(int、Integer(vb.net)、boolなど)を使用します。これはIDEで短くてハイライトされているためです。

5

他のクラス(大文字の最初の文字と同じ構文ハイライト)の間で一貫して見えるので、私は常にSystem.*型を使用します。しかし、それは単なる個人的な好みであり、単なる審美的な問題です。

1

言語タイプと明示的なBCLクラス名のどちらを使用するか使用しない場合よりも、使用するタイプがCLS準拠であるかどうかを知ることが重要です。

特に、符号なし整数の計算では、言語が符号付き整数の計算をサポートする必要はないため、符号なし整数型はCLSに準拠していません。

このシワ以外にも、あなたの組織のコードプラクティスに合わせてもっとイディオムを使用することをお勧めします。あなたの型参照の名前空間を完全に名前を付けるならば、System。*名前空間でそのパターンを続けるでしょう(しかし、読者の負担をかけずに明快さを増すので、その練習に対しても勧めます)。

+0

そして6年後:StyleCopルールセットには組み込み関数が使われています。 –

関連する問題