2011-06-20T23:59:30の更新内容

programming/netfx/basictypes/index.wiki.txt

current previous
1,424 0,0
+
${smdncms:title,基本的なデータ型}
+
${smdncms:keywords,基本型,データ型,サイズ,桁,値域,範囲,最大値,最小値}
+
${smdncms:document_versions,codelang=cs,codelang=vb}
+

          
+
ここでは.NET Frameworkに用意されている基本的なデータ型について解説します。
+

          
+
#googleadunit(banner)
+

          
+
*基本的なデータ型と各言語の型
+
.NET Frameworkでは基本的なデータ型として次のような型が用意されています。 これらの型のほとんどは、各言語のデータ型に対応する型となっています。 例えば、C#のintとVB.NETのIntegerは、.NET Framework上においてはともにSystem.Int32を表します。 以下の表は、.NET Frameworkのデータ型と対応する各言語の型をまとめたものです。
+

          
+
|~.NET Frameworkの型|~種類|>|~対応する型|~備考|h
+
|~|~|~C#|~VB.NET|~|
+
|>|>|>|>|~整数型|
+
|&msdn(netfx,type,System.SByte);|8ビット 符号付き整数|sbyte|SByte||
+
|&msdn(netfx,type,System.Int16);|16ビット 符号付き整数|short|Short||
+
|&msdn(netfx,type,System.Int32);|32ビット 符号付き整数|int|Integer||
+
|&msdn(netfx,type,System.Int64);|64ビット 符号付き整数|long|Long||
+
|&msdn(netfx,type,System.Byte);|8ビット 符号なし整数|byte|Byte||
+
|&msdn(netfx,type,System.UInt16);|16ビット 符号なし整数|ushort|UShort||
+
|&msdn(netfx,type,System.UInt32);|32ビット 符号なし整数|uint|UInteger||
+
|&msdn(netfx,type,System.UInt64);|64ビット 符号なし整数|ulong|ULong||
+
|>|>|>|>|~実数型|
+
|&msdn(netfx,type,System.Single);|単精度浮動小数点数|float|Single||
+
|&msdn(netfx,type,System.Double);|倍精度浮動小数点数|double|Double||
+
|&msdn(netfx,type,System.Decimal);|10進実数|decimal|Decimal||
+
|>|>|>|>|~その他の数値型|
+
|&msdn(netfx,type,System.IntPtr);|ポインタ (符号付き)|(void*, int*など)|-|ポインタやハンドルを表す値を格納するための型&br;ポインタを直接サポートしていない言語との相互運用などに使用される|
+
|&msdn(netfx,type,System.UIntPtr);|ポインタ (符号なし)|(void*, int*など)|-|同上|
+
|>|>|>|>|~文字と文字列の型|
+
|&msdn(netfx,type,System.Char);|文字|char|Char|UTF-16で符号化したUnicode文字列の符号単位を格納&br;ほとんどの場合、Unicode文字1文字が格納される|
+
|&msdn(netfx,type,System.String);|文字列|string|String|UTF-16で符号化したUnicode文字列を格納|
+
|>|>|>|>|~その他の型|
+
|&msdn(netfx,type,System.Object);|オブジェクト|object|Object||
+
|&msdn(netfx,type,System.Boolean);|真偽値|bool|Boolean||
+

          
+
複合的なデータ型として以下のような型も用意されています。 上記の型と同様に、一部の型は言語に対応する型が存在します。
+

          
+
|~.NET Frameworkの型|~種類|>|~対応する型|~備考|h
+
|~|~|~C#|~VB.NET|~|
+
|>|>|>|>|~日付と時刻の型|
+
|&msdn(netfx,type,System.DateTime);|日時|-|Date||
+
|&msdn(netfx,type,System.DateTimeOffset);|日時とオフセット|-|-|DateTimeに世界協定時刻(UTC)からの時刻の差の値を保持するメンバを加えたもの|
+
|&msdn(netfx,type,System.TimeSpan);|時間間隔|-|-||
+
|>|>|>|>|~数値型|
+
|&msdn(netfx,type,System.Numerics.BigInteger);|符号付き整数|-|-|(.NET Framework 4から)|
+
|&msdn(netfx,type,System.Numerics.Complex);|複素数|-|-|(.NET Framework 4から)|
+
|>|>|>|>|~その他|
+
|&msdn(netfx,type,System.Nullable);等|ヌル許容型|(int?, bool?など)|-||
+

          
+

          
+

          
+
*型のサイズ・精度と値域
+
それぞれの型のサイズと、扱える値の精度・値域をまとめると次の表のようになります。
+

          
+
|*整数型のサイズと値域
+
|~型|~最小値|~最大値|~最大桁数&br;(符号を除く)|~サイズ|h
+
|&msdn(netfx,type,System.SByte);&br;(sbyte, SByte)|RIGHT:-128|RIGHT:+127|RIGHT:3|8ビット (1バイト)|
+
|&msdn(netfx,type,System.Int16);&br;(short, Short)|RIGHT:-32,768|RIGHT:+32,767|RIGHT:5|16ビット (2バイト)|
+
|&msdn(netfx,type,System.Int32);&br;(int, Integer)|RIGHT:-2,147,483,648|RIGHT:+2,147,483,647|RIGHT:10|32ビット (4バイト)|
+
|&msdn(netfx,type,System.Int64);&br;(long, Long)|RIGHT:-9,223,372,036,854,775,808|RIGHT:+9,223,372,036,854,775,807|RIGHT:19|64ビット (8バイト)|
+
|&msdn(netfx,type,System.Byte);&br;(byte, Byte)|RIGHT:0|RIGHT:+255|RIGHT:3|8ビット (1バイト)|
+
|&msdn(netfx,type,System.UInt16);&br;(ushort, UShort)|RIGHT:0|RIGHT:+65,535|RIGHT:5|16ビット (2バイト)|
+
|&msdn(netfx,type,System.UInt32);&br;(uint, UInteger)|RIGHT:0|RIGHT:+4,294,967,295|RIGHT:10|32ビット (4バイト)|
+
|&msdn(netfx,type,System.UInt64);&br;(ulong, ULong)|RIGHT:0|RIGHT:+18,446,744,073,709,551,615|RIGHT:20|64ビット (8バイト)|
+
|&msdn(netfx,type,System.IntPtr);|>|>|Int32もしくはInt64と同じ|プラットフォームによって変わり、32ビットマシンなら32ビット(Int32相当)、64ビットマシンなら64ビット(Int64相当)となる|
+
|&msdn(netfx,type,System.UIntPtr);|>|>|UInt32もしくはUInt64と同じ|同上|
+
|&msdn(netfx,type,System.Numerics.BigInteger);|>|>|>|(サイズは格納される値の大きさに応じて拡張される)|
+

          
+
|*実数型のサイズ・精度と値域
+
|~型|~最大値・最小値|~有効桁数|~サイズ|h
+
|&msdn(netfx,type,System.Single);&br;(float, Single)|およそ±1.4×10&sup{−45}; ~ ±3.4 × 10&sup{38};&br;&br;(最小±1.401298×10&sup{−45}; 〜 最大±3.4028235×10&sup{38};)|7|32ビット (4バイト)|
+
|&msdn(netfx,type,System.Double);&br;(double, Double)|およそ±5.0×10&sup{−324}; ~ ±1.8×10&sup{308};&br;&br;(最小±4.94065645841246544×10&sup{−324}; ~ 最大±1.79769313486231570×10&sup{308};)|15~16|64ビット (8バイト)|
+
|&msdn(netfx,type,System.Decimal);|およそ±1.0×10&sup{−28}; ~ ±7.9×10&sup{28};&br;&br;(最小±0.0000000000000000000000000001 ~ 最大±79,228,162,514,264,337,593,543,950,335)|28~29|128ビット (16バイト)|
+
|&msdn(netfx,type,System.Numerics.Complex);|>|>|実数部・虚数部それぞれのサイズと精度は&msdn(netfx,type,System.Double);と同じ|
+

          
+
|*日付と時刻の型のサイズ・精度と値域
+
|~型|~最大値・最小値|~精度|h
+
|&msdn(netfx,type,System.DateTime);|最小 0001年1月1日 00:00:00 ~ 最大 9999年12月31日 23:59:59|100ナノ秒単位|
+
|&msdn(netfx,type,System.DateTimeOffset);|最小 0001年1月1日 00:00:00 (+00:00) ~ 最大 9999年12月31日 23:59:59 (+00:00)&br;オフセット値は最小-14時間 ~ 最大+14時間|100ナノ秒単位|
+
|&msdn(netfx,type,System.TimeSpan);|最小 -10675199日02時間48分05.4775808秒 ~ 最大 10675199日02時間48分05.4775807秒&br;(Int64の最大値・最小値×100ナノ秒)|100ナノ秒単位|
+

          
+

          
+

          
+
*定数
+
基本データ型には、最大値・最小値などの定数を表す静的フィールドが用意されています。
+

          
+
**最大値・最小値
+
MaxValue・MinValueフィールドを参照することで、各型の最大値・最小値を取得することができます。 これらのフィールドは、.NET Frameworkの型名・言語の型名のどちらでも参照できます(当然、値は同じです)。
+

          
+
#tabpage(C#)
+
#code(cs){{
+
using System;
+

          
+
public class Sample
+
{
+
  public static void Main()
+
  {
+
    // int型/Int32の最小値・最大値
+
    Console.WriteLine("int.MinValue   = {0}, int.MaxValue   = {1}", int.MinValue, int.MaxValue);
+
    Console.WriteLine("Int32.MinValue = {0}, Int32.MaxValue = {1}", Int32.MinValue, Int32.MaxValue);
+
    Console.WriteLine();
+

          
+
    // uint型の最小値・最大値
+
    Console.WriteLine("uint.MinValue = {0}, uint.MaxValue = {1}", uint.MinValue, uint.MaxValue);
+

          
+
    // double型の最小値・最大値
+
    Console.WriteLine("double.MinValue = {0}, double.MaxValue = {1}", double.MinValue, double.MaxValue);
+

          
+
    // DateTimeの最小値・最大値
+
    Console.WriteLine("DateTime.MinValue = {0}, DateTime.MaxValue = {1}", DateTime.MinValue, DateTime.MaxValue);
+
  }
+
}
+
}}
+

          
+
#prompt(実行結果){{
+
int.MinValue   = -2147483648, int.MaxValue   = 2147483647
+
Int32.MinValue = -2147483648, Int32.MaxValue = 2147483647
+

          
+
uint.MinValue = 0, uint.MaxValue = 4294967295
+
double.MinValue = -1.79769313486232E+308, double.MaxValue = 1.79769313486232E+308
+
DateTime.MinValue = 0001/01/01 0:00:00, DateTime.MaxValue = 9999/12/31 23:59:59
+
}}
+
#tabpage(VB)
+
#code(vb){{
+
Imports System
+

          
+
Public Class Sample
+
  Public Shared Sub Main()
+
    ' Integer型/Int32の最小値・最大値
+
    Console.WriteLine("Integer.MinValue = {0}, Integer.MaxValue = {1}", Integer.MinValue, Integer.MaxValue)
+
    Console.WriteLine("Int32.MinValue   = {0}, Int32.MaxValue   = {1}", Int32.MinValue, Int32.MaxValue)
+
    Console.WriteLine()
+

          
+
    ' UInteger型の最小値・最大値
+
    Console.WriteLine("UInteger.MinValue = {0}, UInteger.MaxValue = {1}", UInteger.MinValue, UInteger.MaxValue)
+

          
+
    ' Double型の最小値・最大値
+
    Console.WriteLine("Double.MinValue = {0}, Double.MaxValue = {1}", Double.MinValue, Double.MaxValue)
+

          
+
    ' Date型の最小値・最大値
+
    Console.WriteLine("Date.MinValue = {0}, Date.MaxValue = {1}", Date.MinValue, Date.MaxValue)
+
  End Sub
+
End Class
+
}}
+

          
+
#prompt(実行結果){{
+
Integer.MinValue = -2147483648, Integer.MaxValue = 2147483647
+
Int32.MinValue   = -2147483648, Int32.MaxValue   = 2147483647
+

          
+
UInteger.MinValue = 0, UInteger.MaxValue = 4294967295
+
Double.MinValue = -1.79769313486232E+308, Double.MaxValue = 1.79769313486232E+308
+
Date.MinValue = 0001/01/01 0:00:00, Date.MaxValue = 9999/12/31 23:59:59
+
}}
+
#tabpage-end
+

          
+

          
+
**無限大・非数
+
Double等での演算では、ゼロによる除算やゼロ同士の除算などにより、結果が無限大や非数になる場合があります。 &msdn(netfx,type,System.Single){Single};と&msdn(netfx,type,System.Double){Double};には、これらの特殊な値を表す定数が静的フィールドとして用意されています。
+

          
+
:&msdn(netfx,member,System.Double.PositiveInfinity){PositiveInfinityフィールド};|正の無限大を表す定数。 正の数をゼロで除算した場合や、演算結果がMaxValueより大きくなる場合にこの値となります。
+
:&msdn(netfx,member,System.Double.NegativeInfinity){NegativeInfinityフィールド};|負の無限大を表す定数。 負の数をゼロで除算した場合や、演算結果がMinValueより小さくなる場合にこの値となります。
+
:&msdn(netfx,member,System.Double.NaN){NaNフィールド};|非数を表す定数。 ゼロ同士の除算や、非数との演算など、演算の結果が未定義となる場合にこの値となります。
+

          
+
#tabpage(C#)
+
#code(cs){{
+
using System;
+

          
+
public class Sample
+
{
+
  public static void Main()
+
  {
+
    double zero = 0.0;
+
    double plus = +1.0;
+
    double minus = -1.0;
+

          
+
    Console.WriteLine("{0} {1}", plus / zero, double.PositiveInfinity);
+
    Console.WriteLine("{0} {1}", minus / zero, double.NegativeInfinity);
+
    Console.WriteLine("{0} {1}", zero / zero, double.NaN);
+
  }
+
}
+
}}
+
#tabpage(VB)
+
#code(vb){{
+
Imports System
+

          
+
Public Class Sample
+
  Public Shared Sub Main()
+
    Dim zero As Double = 0.0
+
    Dim plus As Double = +1.0
+
    Dim minus As Double = -1.0
+

          
+
    Console.WriteLine("{0} {1}", plus / zero, Double.PositiveInfinity)
+
    Console.WriteLine("{0} {1}", minus / zero, Double.NegativeInfinity)
+
    Console.WriteLine("{0} {1}", zero / zero, Double.NaN)
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
#prompt(実行結果){{
+
+∞ +∞
+
-∞ -∞
+
NaN (非数値) NaN (非数値)
+
}}
+

          
+
&msdn(netfx,type,System.Single){Single};と&msdn(netfx,type,System.Double){Double};には、値が非数や無限大かどうかを調べるメソッドも用意されています。
+

          
+
:&msdn(netfx,method,System.Double.IsInfinity){IsInfinityメソッド};|値が正または負の無限大かどうか調べる。
+
値がPositiveInfinityまたはNegativeInfinityとなる場合はtrue、そうでなければfalseが返される。
+
:&msdn(netfx,method,System.Double.IsPositiveInfinity){IsPositiveInfinityメソッド};|値が正の無限大かどうか調べる。
+
値がPositiveInfinityとなる場合はtrue、そうでなければfalseが返される。
+
:&msdn(netfx,method,System.Double.IsNegativeInfinity){IsNegativeInfinityメソッド};|値が負の無限大かどうか調べる。
+
値がNegativeInfinityとなる場合はtrue、そうでなければfalseが返される。
+
:&msdn(netfx,method,System.Double.IsNaN){IsNaNメソッド};|値が非数かどうか調べる。
+
値がNaNとなる場合はtrue、そうでなければfalseが返される。
+

          
+
#tabpage(C#)
+
#code(cs){{
+
using System;
+

          
+
public class Sample
+
{
+
  public static void Main()
+
  {
+
    double d1 = +1.0 / 0.0;
+

          
+
    Console.WriteLine(d1);
+
    Console.WriteLine("IsInfinity={0}", double.IsInfinity(d1));
+
    Console.WriteLine("IsPositiveInfinity={0}", double.IsPositiveInfinity(d1));
+
    Console.WriteLine("IsNegativeInfinity={0}", double.IsNegativeInfinity(d1));
+
    Console.WriteLine("IsNaN={0}", double.IsNaN(d1));
+
    Console.WriteLine();
+

          
+
    double d2 = -1.0 / 0.0;
+

          
+
    Console.WriteLine(d2);
+
    Console.WriteLine("IsInfinity={0}", double.IsInfinity(d2));
+
    Console.WriteLine("IsPositiveInfinity={0}", double.IsPositiveInfinity(d2));
+
    Console.WriteLine("IsNegativeInfinity={0}", double.IsNegativeInfinity(d2));
+
    Console.WriteLine("IsNaN={0}", double.IsNaN(d2));
+
    Console.WriteLine();
+

          
+
    double d3 =  0.0 / 0.0;
+

          
+
    Console.WriteLine(d3);
+
    Console.WriteLine("IsInfinity={0}", double.IsInfinity(d3));
+
    Console.WriteLine("IsPositiveInfinity={0}", double.IsPositiveInfinity(d3));
+
    Console.WriteLine("IsNegativeInfinity={0}", double.IsNegativeInfinity(d3));
+
    Console.WriteLine("IsNaN={0}", double.IsNaN(d3));
+
    Console.WriteLine();
+
  }
+
}
+
}}
+
#tabpage(VB)
+
#code(vb){{
+
Imports System
+

          
+
Public Class Sample
+
  Public Shared Sub Main()
+
    Dim d1 As Double = +1.0 / 0.0
+

          
+
    Console.WriteLine(d1)
+
    Console.WriteLine("IsInfinity={0}", Double.IsInfinity(d1))
+
    Console.WriteLine("IsPositiveInfinity={0}", Double.IsPositiveInfinity(d1))
+
    Console.WriteLine("IsNegativeInfinity={0}", Double.IsNegativeInfinity(d1))
+
    Console.WriteLine("IsNaN={0}", Double.IsNaN(d1))
+
    Console.WriteLine()
+

          
+
    Dim d2 As Double = -1.0 / 0.0
+

          
+
    Console.WriteLine(d2)
+
    Console.WriteLine("IsInfinity={0}", Double.IsInfinity(d2))
+
    Console.WriteLine("IsPositiveInfinity={0}", Double.IsPositiveInfinity(d2))
+
    Console.WriteLine("IsNegativeInfinity={0}", Double.IsNegativeInfinity(d2))
+
    Console.WriteLine("IsNaN={0}", Double.IsNaN(d2))
+
    Console.WriteLine()
+

          
+
    Dim d3 As Double =  0.0 / 0.0
+

          
+
    Console.WriteLine(d3)
+
    Console.WriteLine("IsInfinity={0}", Double.IsInfinity(d3))
+
    Console.WriteLine("IsPositiveInfinity={0}", Double.IsPositiveInfinity(d3))
+
    Console.WriteLine("IsNegativeInfinity={0}", Double.IsNegativeInfinity(d3))
+
    Console.WriteLine("IsNaN={0}", Double.IsNaN(d3))
+
    Console.WriteLine()
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
#prompt(実行結果){{
+
+∞
+
IsInfinity=True
+
IsPositiveInfinity=True
+
IsNegativeInfinity=False
+
IsNaN=False
+

          
+
-∞
+
IsInfinity=True
+
IsPositiveInfinity=False
+
IsNegativeInfinity=True
+
IsNaN=False
+

          
+
NaN (非数値)
+
IsInfinity=False
+
IsPositiveInfinity=False
+
IsNegativeInfinity=False
+
IsNaN=True
+
}}
+

          
+
このほか、SingleおよびDoubleで表現できる(ゼロでない)最小の数を表す&msdn(netfx,member,System.Double.Epsilon){Epsilonフィールド};も用意されています。
+

          
+
#tabpage(C#)
+
#code(cs){{
+
using System;
+

          
+
public class Sample
+
{
+
  public static void Main()
+
  {
+
    Console.WriteLine("{0:r}", float.Epsilon);
+
    Console.WriteLine("{0:r}", double.Epsilon);
+
  }
+
}
+
}}
+
#tabpage(VB)
+
#code(vb){{
+
Imports System
+

          
+
Public Class Sample
+
  Public Shared Sub Main()
+
    Console.WriteLine("{0:r}", Single.Epsilon)
+
    Console.WriteLine("{0:r}", Double.Epsilon)
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
#prompt(実行結果){{
+
1.401298E-45
+
4.94065645841247E-324
+
}}
+

          
+

          
+
**ヌル値
+
&msdn(netfx,type,System.IntPtr){IntPtr};と&msdn(netfx,type,System.UIntPtr){UIntPtr};には、値が0のポインタを表すフィールド&msdn(netfx,member,System.IntPtr.Zero){Zero};が用意されています。 プラットフォームAPIの呼び出し時に、ポインタ引数の値としてNULLを指定したい場合などに使用することができます。 これはコンストラクタに0を指定した場合と同じ値です。
+

          
+
#tabpage(C#)
+
#code(cs){{
+
using System;
+

          
+
public class Sample
+
{
+
  public static void Main()
+
  {
+
    Console.WriteLine("{0} {1}", IntPtr.Zero, new IntPtr(0));
+
    Console.WriteLine("{0} {1}", UIntPtr.Zero, new UIntPtr(0));
+
  }
+
}
+
}}
+
#tabpage(VB)
+
#code(vb){{
+
Imports System
+

          
+
Public Class Sample
+
  Public Shared Sub Main()
+
    Console.WriteLine("{0} {1}", IntPtr.Zero, New IntPtr(0))
+
    Console.WriteLine("{0} {1}", UIntPtr.Zero, New UIntPtr(0UI))
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
#prompt(実行結果){{
+
0 0
+
0 0
+
}}
+

          
+

          
+
**現在の日時・日付
+
&msdn(netfx,type,System.DateTime){DateTime};と&msdn(netfx,type,System.DateTimeOffset){DateTimeOffset};には、現在の日時を表す&msdn(netfx,member,System.DateTime.Now){Nowプロパティ};と&msdn(netfx,member,System.DateTime.Today){Todayプロパティ};が用意されています。 Nowプロパティは時刻を含めた値であるのに対し、Todayプロパティは日付のみの値となります(時刻の部分は常に0時0分0秒)。 また、Nowプロパティではローカル時刻を取得できますが、&msdn(netfx,member,System.DateTime.UtcNow){UtcNowプロパティ};を参照するとUTCでの時刻を取得することができます。
+

          
+
#tabpage(C#)
+
#code(cs){{
+
using System;
+

          
+
public class Sample
+
{
+
  public static void Main()
+
  {
+
    Console.WriteLine("Today:  {0:o}", DateTime.Today);
+
    Console.WriteLine("Now:    {0:o}", DateTime.Now);
+
    Console.WriteLine("UtcNow: {0:o}", DateTime.UtcNow);
+
  }
+
}
+
}}
+
#tabpage(VB)
+
#code(vb){{
+
Imports System
+

          
+
Public Class Sample
+
  Public Shared Sub Main()
+
    Console.WriteLine("Today:  {0:o}", DateTime.Today)
+
    Console.WriteLine("Now:    {0:o}", DateTime.Now)
+
    Console.WriteLine("UtcNow: {0:o}", DateTime.UtcNow)
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
#prompt(実行結果){{
+
Today:  2011-06-20T00:00:00.0000000+09:00
+
Now:    2011-06-20T23:01:05.0298480+09:00
+
UtcNow: 2011-06-20T14:01:05.0299450Z
+
}}
+

          
+
なお、このプロパティで取得できる日時はシステム時計の分解能に依存するため、短時間に連続して取得すると同じ値が返ってくる場合があります。
+

          
+

          
+
*型変換・丸め
+
型の変換や実数型の丸めには、各言語のキャスト構文や、Parse/TryParse/ToStringなどのメソッド、&msdn(netfx,type,System.Convert){Convertクラス};を用いることができます。 詳しくは[[programming/netfx/conversion/0_basetype]]で解説しています。
+

          
+

          

programming/vb.net/basics/01_variables/index.wiki.txt

current previous
11,7 11,6
 
一方、型とは変数の扱える値の種類のことです。 たとえば、整数や実数、または文字などです。 この名前と型をもって変数を宣言する必要があります。
一方、型とは変数の扱える値の種類のことです。 たとえば、整数や実数、または文字などです。 この名前と型をもって変数を宣言する必要があります。
 

        

        
 
-関連するページ
-関連するページ
+
--[[programming/netfx/basictypes]]
 
--[[programming/vb8/diff_from_7x/00_unsigned_types]]
--[[programming/vb8/diff_from_7x/00_unsigned_types]]
 
--[[programming/netfx/string]]
--[[programming/netfx/string]]
 
--[[programming/netfx/classlibrary/1_interoperability]]
--[[programming/netfx/classlibrary/1_interoperability]]
49,52 48,29
 
Dim obj As Object ' オブジェクト型
Dim obj As Object ' オブジェクト型
 
}}
}}
 

        

        
~
VB.NETから新たに加わった型は、Short, Decimal, Char, Objectです。 また、Integer型は16ビットから32ビットへと変わりました。 それに伴いLong型も32ビットから64ビットへ格上げされました。
VB.NETから新たに加わった型は、Short, Decimal, Char, Objectです。 また、Integer型は16ビットから32ビットへと変わりました。 それに伴いLong型も32ビットから64ビットへ格上げされました。 これ以外の詳しいことはこの次を参照してください。
 

        

        
~
*プリミティブ型
*プリミティブ型のサイズと値の範囲
~
VB.NETでのプリミティブ型の表記は、すべて.NET Frameworkで定義された型の別名になっています。 次の二つのコードは表記が異なるだけで全く同じ意味です。
プリミティブ型(VB.NETの基本型)の概要と扱える値の範囲をまとめておきます。
+

          
+
#code(vb,VB.NETプリミティブ型){{
+
Dim b As Byte
+
Dim sh As Short
+
Dim i As Integer
+
Dim l As Long
+

          
+
Dim s As Single
+
Dim d As Double
+
Dim dc As Decimal
+

          
+
Dim c As Char
+
Dim str As String
+

          
+
Dim bln As Boolean
+

          
+
Dim dt As Date
+

          
+
Dim obj As Object
+
}}
+

          
+
#code(vb,同じ型を.NET Frameworkで定義されている名前で宣言した例){{
+
Dim b As System.Byte
+
Dim sh As System.Int16
+
Dim i As System.Int32
+
Dim l As System.Int64
+

          
+
Dim s As System.Single
+
Dim d As System.Double
+
Dim dc As System.Decimal
+

          
+
Dim c As System.Char
+
Dim str As System.String
 

        

        
~
Dim bln As System.Boolean
|型|名称|サイズ(バイト)|値の範囲|h
~

          
|>|>|>|整数型|
~
Dim dt As System.DateTime
|Byte|バイト型|1|0 〜 255 符号なし|
~

          
|Short|短整数型|2|-32,768 〜 32,767|
~
Dim obj As System.Object
|Integer|整数型|4|-2,147,483,648 〜 2,147,483,647|
~
}}
|Long|長整数型|8|-9,223,372,036,854,775,808 〜 9,223,372,036,854,775,807|
~

          
|>|>|>|実数型|
~
プリミティブ型はVB.NETに固有な型であるように見えますが、内部的にはC#など.NET Frameworkを使用する他の言語からも共通して使われる型と同じです。 また、これらのプリミティブ型はすべて[[構造体>programming/vb.net/basics/09_structure]]になっています。 これらの型の種類と値域などの詳細については、[[programming/netfx/basictypes]]で詳しく解説しています。
|Single|単精度浮動小数点型|4 |-3.4028235E+38 〜 -1.401298E-45 (負の値)&br;1.401298E-45 〜 3.4028235E+38 (正の値)|
-
|Double|倍精度浮動小数点型|8 |-1.79769313486231570E+308 〜 -4.94065645841246544E-324 (負の値)&br;4.94065645841246544E-324 〜 1.79769313486231570E+308 (正の値)|
-
|Decimal|十進型|16 |-79,228,162,514,264,337,593,543,950,335 〜 79,228,162,514,264,337,593,543,950,335 (小数部分を持たない数値の場合)&br;-7.9228162514264337593543950335 〜 7.9228162514264337593543950335 (小数点以下 28 桁の数値の場合)&br;0.0000000000000000000000000001 (1E-28) (0 を除いた場合の絶対値の最小値)|
-
|>|>|>|文字・文字列型|
-
|Char|文字型|2|0 〜 65535 (符号なし)、Unicode文字一文字|
-
|String|文字列型|(可変)|0個 〜 約20億個のUnicode文字|
-
|>|>|>|その他の型|
-
|Boolean|ブール型|2|True または False のいずれか|
-
|Date|日付型|8|0001年 1月 1日 0:00:00 AM 〜 9999年 12月 31日 11:59:59 PM|
-
|Object|オブジェクト型|4|任意の値|
-
|型|名称|サイズ(バイト)|値の範囲|f
 

        

        
 
*宣言と代入
*宣言と代入
 

        

        
308,4 284,67
 
1
1
 
}}
}}
 

        

        
-
*型の別名
-
VB.NETでのプリミティブ型の表記は、すべて.NET Frameworkで定義された型の別名になっています。 次の二つのコードは表記が異なるだけで全く同じ意味です。
-

          
-
#code(vb,VB.NETプリミティブ型){{
-
Dim b As Byte
-
Dim sh As Short
-
Dim i As Integer
-
Dim l As Long
-

          
-
Dim s As Single
-
Dim d As Double
-
Dim dc As Decimal
-

          
-
Dim c As Char
-
Dim str As String
-

          
-
Dim bln As Boolean
-

          
-
Dim dt As Date
-

          
-
Dim obj As Object
-
}}
-

          
-
#code(vb,同じ型を.NET Frameworkで定義されている名前で宣言した例){{
-
Dim b As System.Byte
-
Dim sh As System.Int16
-
Dim i As System.Int32
-
Dim l As System.Int64
-

          
-
Dim s As System.Single
-
Dim d As System.Double
-
Dim dc As System.Decimal
-

          
-
Dim c As System.Char
-
Dim str As System.String
-

          
-
Dim bln As System.Boolean
-

          
-
Dim dt As System.DateTime
-

          
-
Dim obj As System.Object
-
}}
-

          
-
プリミティブ型はVB.NETに固有な型であるように見えますが、内部的にはC#など.NET Frameworkを使用する他の言語からも共通して使われる型と同じです。 また、これらのプリミティブ型はすべて[[構造体>programming/vb.net/basics/09_structure]]になっています。
-

          
-
*型の最大値・最小値の取得
-
すべての型には共有プロパティや共有メソッドが存在します。 その一例として、整数型ではその型の最大値と最小値を取得することができます。
-

          
-
#code(vb){{
-
' 整数型の最大値、最小値
-
Console.WriteLine("Byte    : min {0}, max {1}", Byte.MinValue, Byte.MaxValue)
-
Console.WriteLine("Short   : min {0}, max {1}", Short.MinValue, Short.MaxValue)
-
Console.WriteLine("Integer : min {0}, max {1}", Integer.MinValue, Integer.MaxValue)
-
Console.WriteLine("Long    : min {0}, max {1}", Long.MinValue, Long.MaxValue)
-
}}
-

          
-
#prompt(実行結果){{
-
Byte    : min 0, max 255
-
Short   : min -32768, max 32767
-
Integer : min -2147483648, max 2147483647
-
Long    : min -9223372036854775808, max 9223372036854775807
-
}}
-

          
 
#navi(..)
#navi(..)