C#-データ型

C#の変数は、次のタイプに分類されます-

  • 値型
  • 参照型
  • ポインタの種類

値型

値型変数には、値を直接割り当てることができます。それらはクラスから派生しています System.ValueType

値型にはデータが直接含まれます。いくつかの例はint, char, and float、数字、アルファベット、浮動小数点数をそれぞれ格納します。あなたが宣言するときint タイプの場合、システムは値を格納するためにメモリを割り当てます。

次の表に、C#2010で使用可能な値の種類を示します。

タイプ を表します 範囲 デフォルト値
ブール ブール値 正しいか間違っているか 誤り
バイト 8ビットの符号なし整数 0から255 0
char 16ビットUnicode文字 U + 0000からU + ffff '\ 0'
10進数 有効数字28〜29桁の128ビットの正確な10進値 (-7.9×10 28 ×10の7.9 28 /10)0 28 0.0M
ダブル 64ビット倍精度浮動小数点型 (+/-)5.0×10 -324に(+/-)1.7×10 308 0.0D
浮く 32ビット単精度浮動小数点型 -3.4×10 38 10×3.4 +に38 0.0F
int 32ビット符号付き整数型 -2,147,483,648から2,147,483,647 0
長いです 64ビット符号付き整数型 -9,223,372,036,854,775,808から9,223,372,036,854,775,807 0L
sbyte 8ビット符号付き整数型 -128〜127 0
ショート 16ビット符号付き整数型 -32,768〜32,767 0
uint 32ビット符号なし整数型 0から4,294,967,295 0
ウロン 64ビット符号なし整数型 0から18,446,744,073,709,551,615 0
ushort 16ビット符号なし整数型 0〜65,535 0

特定のプラットフォームで型または変数の正確なサイズを取得するには、 sizeof方法。式sizeof(type)は、オブジェクトまたはタイプのストレージサイズをバイト単位で生成します。以下は、任意のマシンでint型のサイズを取得する例です-

using System;

namespace DataTypeApplication {
   class Program {
      static void Main(string[] args) {
         Console.WriteLine("Size of int: {0}", sizeof(int));
         Console.ReadLine();
      }
   }
}

上記のコードをコンパイルして実行すると、次の結果が得られます。

Size of int: 4

参照型

参照型には、変数に格納されている実際のデータは含まれていませんが、変数への参照は含まれています。

言い換えれば、それらはメモリ位置を参照します。複数の変数を使用して、参照型はメモリ位置を参照できます。メモリ位置のデータが一方の変数によって変更された場合、もう一方の変数はこの値の変更を自動的に反映します。の例built-in 参照型は次のとおりです。 objectdynamic, そして string

オブジェクトタイプ

ザ・ Object Typeは、C#Common Type System(CTS)のすべてのデータ型の究極の基本クラスです。Objectは、System.Objectクラスのエイリアスです。オブジェクトタイプには、他のタイプ、値タイプ、参照タイプ、定義済みまたはユーザー定義タイプの値を割り当てることができます。ただし、値を割り当てる前に、型変換が必要です。

値型がオブジェクト型に変換されると、呼び出されます boxing 一方、オブジェクト型が値型に変換されると、それは呼び出されます unboxing

object obj;
obj = 100; // this is boxing

ダイナミックタイプ

動的データ型変数には、任意のタイプの値を格納できます。これらのタイプの変数のタイプチェックは、実行時に行われます。

動的型を宣言するための構文は次のとおりです。

dynamic <variable_name> = value;

例えば、

dynamic d = 20;

動的型はオブジェクト型に似ていますが、オブジェクト型変数の型チェックはコンパイル時に行われるのに対し、動的型変数の型チェックは実行時に行われます。

文字列型

ザ・ String Type任意の文字列値を変数に割り当てることができます。文字列型は、System.Stringクラスのエイリアスです。オブジェクトタイプから派生します。文字列型の値は、quotedと@quotedの2つの形式の文字列リテラルを使用して割り当てることができます。

例えば、

String str = "Tutorials Point";

@quoted文字列リテラルは次のようになります-

@"Tutorials Point";

ユーザー定義の参照型は、クラス、インターフェイス、またはデリゲートです。これらのタイプについては、後の章で説明します。

ポインタ型

ポインタ型変数は、別の型のメモリアドレスを格納します。C#のポインターには、CまたはC ++のポインターと同じ機能があります。

ポインタ型を宣言するための構文は次のとおりです。

type* identifier;

例えば、

char* cptr;
int* iptr;

「安全でないコード」の章でポインタの種類について説明します。