CSharp

// 値型(構造体は値型になる)
struct Point
{
  public int x, y;

  public Point(int x, int y){this.x = x; this.y = y;}
  public override string ToString()
  {
    return "(" + this.x.ToString() + ", " + this.y.ToString() + ")";
  }
}

// 参照型(クラスは参照型になる)
class Point
{
  public int x, y;

  public Point(int x, int y){this.x = x; this.y = y;}
  public override string ToString()
  {
    return "(" + this.x.ToString() + ", " + this.y.ToString() + ")";
  }
}

値型と参照型にはそれぞれ利点・欠点があります。

値型は変数ごとに別個の値を保持するため、 代入時(関数に引数として渡す場合も含む)に値の複製を行う必要があります。 サイズが大きい(メンバー変数が多い)場合、複製に大きな手間がかかり非効率的です。 しかし、値を直接操作できるため、値の読み書きは高速になります。

一方、参照型は代入時には参照情報のみを渡すので、 どんなにサイズが大きくても大きな手間はかかりません。 しかし、値を操作する場合、参照情報を用いて実体のある場所を探してから値の操作を行う必要があるので、 値の読み書きは値型にくらべ低速になります。

C#の型の分類

値型

  • 構造体型
    • ユーザー定義構造体(struct)
  • 数値型
    • 整数型 byte, sbyte, char, short, ushort, int, uint, long, ulong
    • 浮動小数点型 float, double
    • decimal
  • bool
  • string
  • 列挙型(enum)

参照型

  • クラス(class)
  • インターフェース(interface)
  • デリゲート(delegate)
  • object
  • 配列


フレッツ光が月額556円~【GMOとくとくBB】

コメント:



(画像の文字列を入力して下さい)

トップ   編集 凍結 差分 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019/12/02 (月) 12:33:21 (1627d)

PCpዾyǗlgĂ܂}WŔ܂z 萔O~ył񂫁z Yahoo yV NTT-X Store

z[y[W ̃NWbgJ[h COiq ӂ邳Ɣ[ COsیI COze