第1章 第3節 まずは型から入りましょう


← 前に戻る | 次に進む →

ここでは、C#を使用する上での基本的な型や宣言についての解説をします。いろいろな種類があって最初は戸惑うかもしれませんが、使ってみればそんなに難しいことはありませんし、もし、意味や使い方を忘れてしまっても、もう一度このページを見ればよいだけのことです(^-^)。

以下の表に、C#で使われる組み込み型を示します。

説明
object 他のすべての型の最終的な基本型
string 文字列型; 文字列にはUNICODE文字が使用される
sbyte 8ビット符号付き整数型
short 16ビット符号付き整数型
int 32ビット符号付き整数型
long 64ビット符号付整数型
byte 8ビット符号なし整数型
ushort 16ビット符号なし整数型
uint 32ビット符号なし整数型
ulong 64ビット符号なし整数型
float 単精度浮動小数点型
double 倍精度浮動小数点型
bool ブール型; 真偽値はtrueまたはfalseのいずれか
char 文字型; UNICODE文字
decimal 高精度十進数型; 有効数字は28桁

組み込み型の本体は…?

intなどの組み込み型は、じつは、システムが提供している型の省略形です。例えば、intはSystem.Int32を示しています。プログラム中ではどちらも使用できますが、読み易さなども考慮して、できるだけ省略形を使用するほうが良いでしょう。

組み込み型がいろいろとたくさん出てきましたが、大まかに捉えれば、文字列型および文字型(string, char)、符号付き整数型(sbyte, short, int, long)、符号なし整数型(byte, ushort, uint, ulong)、浮動小数点型(float, double)、ブール型(bool)、高精度十進数型(decimal)、そして、すべて型の基本型(object)の7つです。そう考えれば、それほど複雑にはならないでしょう。

では、上記の型についての使い方の例を下に示します。

List 1.2 いろいろな型を使ったプログラム

using System;

class Example
{
  static void Main() {
    object  ob  = null;
    string  str = "string";  // 文字列は"で括る.
    sbyte   sb  = 10;
    short   s   = 11;
    int     i   = 12;
    long    l   = 13;    // or 13L
    byte    b   = 14;
    ushort  us  = 15;    // or 15U
    uint    ui  = 16;    // or 16U
    ulong   ul  = 17;    // or 17U, 17L, 17UL
    float   f   = 1.23F;
    double  d   = 2.34;  // or 2.34D
    bool    bl  = true;
    char    c   = 'A';   // 文字は'で括る.
    decimal dec = 3.45M;

    Console.WriteLine("object:  {0}", ob);
    Console.WriteLine("string:  {0}", str);
    Console.WriteLine("sbyte:   {0}", sb);
    Console.WriteLine("short:   {0}", s);
    Console.WriteLine("int:     {0}", i);
    Console.WriteLine("long:    {0}", l);
    Console.WriteLine("byte:    {0}", b);
    Console.WriteLine("ushort:  {0}", us);
    Console.WriteLine("uint:    {0}", ui);
    Console.WriteLine("ulong:   {0}", ul);
    Console.WriteLine("float:   {0}", f);
    Console.WriteLine("double:  {0}", d);
    Console.WriteLine("bool:    {0}", bl);
    Console.WriteLine("char:    {0}", c);
    Console.WriteLine("decimal: {0}", dec);
  }
}


object:
string:  string
sbyte:   10
short:   11
int:     12
long:    13
byte:    14
ushort:  15
uint:    16
ulong:   17
float:   1.23
double:  2.34
bool:    True
char:    A
decimal: 3.45

C#での型は、値型と参照型の二つに区分けされます。値型には、単純型(char, int, float)、列挙型、構造体型が含まれます。参照型には、クラス型、インターフェイス型、デリゲート型、および配列型が含まれます。上記で示した組み込み型もこの二つに分けられるのですが、参照型にはobject型とstring型があり、その他が値型となります。

値型は、変数が直接データを保持しています。それに対して、参照型では、変数オブジェクトへの参照を保持しており、別々の変数が同じオブジェクトを参照できます。そのため、一方の変数を変更すると、もう一方の変数が参照しているオブジェクトも同じように変更されます。値型では、それぞれの変数が独立にデータを保持しているので、1つの変数を変更しても、ほかの変数が変更されることはありません。

以下に、その例を示します。

List 1.3 値型と参照型の例

using System;

// structは値型.
struct TestStruct
{
  public int value;
}

// classは参照型.
class TestClass
{
  public int value;
}

class Example
{
  static void Main() {
    TestStruct s1 = new TestStruct();
    s1.value = 0;
    TestStruct s2 = s1;
    s2.value = 10;
    TestClass c1 = new TestClass();
    c1.value = 0;
    TestClass c2 = c1;
    c2.value = 10;

    Console.WriteLine("値型  struct: {0}, {1}", s1.value, s2.value);
    Console.WriteLine("参照型 class: {0}, {1}", c1.value, c2.value);
  }
}


値型  struct: 0, 10
参照型 class: 10, 10

この例のように、値型では、一方のオブジェクトを変更しても別のオブジェクトは影響されませんが、参照型では、一方のオブジェクトの変更が、もう一方にそのまま反映されます。

次の節では、参照型の一つ、配列型について解説していきます。


← 前に戻る | 次に進む →


Copyright (C) Noriyuki Futatsugi/Foota Software, Japan.
All rights reserved.
d2VibWFzdGVyQGZ1dGF0c3VnaS5uZXQ=