DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

System.Int32とVB.NETのInteger、C#のintとの違い

32ビットの整数を表す型「System.Int32」は、VB.NETでは「Integer」、C#では「int」と書くこともできます。「Integer」や「int」は「System.Int32」のエイリアス(別名)ですので、どちらを使っても結果は全く同じになります。つまり、コードの見た目が変わるだけで、それ以外の違いは全くありません。

以下のコードの2行は全く同じことです。

VB.NET
コードを隠すコードを選択
Dim i As Integer = 0
Dim i As System.Int32 = 0
C#
コードを隠すコードを選択
int i = 0;
System.Int32 i = 0;

以下、「Integer」や「int」を「組み込み型」、「System.Int32」を「.NET Framework型」と呼ぶことにします。

組み込み型の一覧

Integerやint以外にも組み込み型は幾つかあります。もちろんこれらも、組み込み型と.NET Framework型のどちらを使っても同じ結果になります。

以下にVB.NETとC#の組み込み型を列挙します。

.NET Framework型 VB.NET型 C#型
System.Boolean Boolean bool
System.Byte Byte byte
System.SByte SByte sbyte
System.Char Char char
System.Decimal Decimal decimal
System.Double Double double
System.Single Single float
System.Int32 Integer int
System.UInt32 UInteger uint
System.Int64 Long long
System.UInt64 ULong ulong
System.Object Object object
System.Int16 Short short
System.UInt16 UShort ushort
System.String String string

どちらかしか使用できないケース

実は組み込み型しか使用できないケースがあります。

構造体を宣言する時に基になる型を指定することができますが、C#ではこの時組み込み型でしか記述できません。.NET Framework型で記述するとコンパイル時にエラーになります。

C#
コードを隠すコードを選択
enum Fruits : int
{
    Apple,
    Orange
}

//以下のようにするとエラーになる
enum Fruits2 : System.Int32
{
    Apple,
    Orange
}

VB.NETでは、どちらでも大丈夫なようです。

VB.NET
コードを隠すコードを選択
Public Enum Fruits As Integer
    Apple
    Orange
End Enum

'以下のようにしても大丈夫
Public Enum Fruits2 As System.Int32
    Apple
    Orange
End Enum

どちらを使うべきか?

組み込み型と.NET Framework型のどちらを使うべきかについては、はっきりした規則(ガイドライン)がありません。MSDNのコードを見ても一貫性が見られません。

一般的には組み込み型を使うという人が多いような気がしますが、逆に.NET Framework型しか使わないという人もいます。あるいは、通常は組み込み型を使い、型の静的メンバ(Int32.Parseメソッドなど)を呼び出す時だけ.NET Framework型を使うという人もいます。

組み込み型を使う利点と.NET Framework型を使う利点がそれぞれにあります。まずは組み込み型を使う利点を挙げてみます。

  • 他の言語などで「Integer」や「int」に馴染みがある人にとっては、こちらの方が分かりやすい。
  • 組み込み型はキーワードになっているので、Visual Studioのコードエディタで青く表示されて見やすい。
  • タイプするのが楽。
  • 「System.」を書かなくてもよい。「Imports System」(C#では、「using System;」)を書かなくてもよい。

次に.NET Framework型名を使う利点を挙げてみます。

  • 組み込み型は言語によって異なるので、分かりにくい。しかも、C#のlongとC++のlongのように、同じ名前でも言語によって別の型のエイリアスである場合もあり、紛らわしい。
  • 例えば「Int32」なら、32ビットの整数型ということがすぐに分かる。
  • BinaryReader.ReadInt32BitConverter.ToInt32Convert.ToInt32メソッドのように.NET Framework型の名前が入っているメソッドが多く、このようなメソッドを呼び出す時は.NET Framework型を使った方が自然である。

以上を参考にして、お好きな方をご使用ください。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。