DOBON.NET

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.BooleanBooleanbool
System.ByteBytebyte
System.SByteSBytesbyte
System.CharCharchar
System.DecimalDecimaldecimal
System.DoubleDoubledouble
System.SingleSinglefloat
System.Int32Integerint
System.UInt32UIntegeruint
System.Int64Longlong
System.UInt64ULongulong
System.ObjectObjectobject
System.Int16Shortshort
System.UInt16UShortushort
System.StringStringstring

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

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

構造体を宣言する時に基になる型を指定することができますが、C#ではこの時組み込み型でしか記述できません。.NET Framework型で記述するとコンパイル時にエラー(コンパイラエラーCS1008 : byte、sbyte、short、ushort、int、uint、long または ulong のいずれかの型を使用してください。)になります。

ただし、Visual Studio 2015からは、このエラーが出なくなりました。

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型を使った方が自然である。

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

  • 履歴:
  • 2018/6/11 Visual Studio 2015からは、構造体の型を.NET Framework型で記述できるようになったことを追記。

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

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

この記事への評価

この記事へのコメント

この記事に関するコメントを投稿するには、下のボタンをクリックしてください。投稿フォームへ移動します。通常のご質問、ご意見等は掲示板へご投稿ください。