ホームページ  >  記事  >  バックエンド開発  >  C# のデータ型

C# のデータ型

黄舟
黄舟オリジナル
2017-02-10 15:09:011403ブラウズ

C# のデータ型は、数値型、参照型、ポインター型の 3 つのカテゴリに分類できます。ポインター型は安全でないコードでのみ使用されます。
値の型には、単純型 (文字型、浮動小数点型、整数型など)、コレクション型、構造型が含まれます。参照型には、クラス型、インターフェイス型、代表型、配列型が含まれます。

値型と参照型の違いは、値型の変数値には直接データが含まれるのに対し、参照型の変数は参照をオブジェクトに保存することです。参照型変数の場合、2 つの異なる変数が同じオブジェクトを参照することが完全に可能です。このようにして、1 つの変数に対する操作が、もう 1 つの変数によって参照されるオブジェクトに影響を与えます。値型変数の場合、各変数は独自の値を持つため、ある変数に対する操作が別の変数に影響を与えることはできません。
1 値の型
すべての値の型は、デフォルト コンストラクターと呼ばれるパラメーターのないパブリック コンストラクターを暗黙的に宣言します。デフォルトのコンストラクターは、デフォルト値と呼ばれる、最初はゼロである値型のインスタンスを返します。
sbyte、byte、short、ushort、int、uint、long、ulong のデフォルト値は 0 です。
char の場合、デフォルト値は 'x0000'
float の場合、デフォルト値は 0.0F
double の場合、デフォルト値は 0.0D
10 進数の場合、デフォルト値は 0.0M
bool の場合、デフォルト値は false です
列挙型の場合、デフォルト値は 0 です
構造型の場合、デフォルト値の設定は、すべての値型のフィールドをそれぞれのデフォルト値に設定し、すべての参照型のフィールドを割り当てることですto empty
1.1 単純型
C# は、単純型と呼ばれる事前定義された構造型のセットを提供します。単純型は予約語を使用して定義されます。予約語は、System 名前空間で事前定義された構造型の単なる仮名です。たとえば、int は予約語 System です。 Int32 は、System 名前空間で事前定義された型です。単純型は、そのエイリアス化された構造型とまったく同じです。つまり、int を記述することは、System を記述することと同じです。 Int32も同様です。単純型には主に整数、浮動小数点型、10 進数型、ブール型、文字型が含まれます
1.1.1 整数型
C# は 9 つの整数型をサポートします: sbyte、byte、short、ushort、int、uint、long、ulong、チャー。
Sbyte: -128 ~ 127 の範囲の符号付き 8 ビット整数を表します。
Byte: 0 ~ 255 の範囲の符号なし 8 ビット整数を表します。
Short: -32768 ~ 32767 の範囲の符号付き 16 ビット整数を表します。
ushort: -32768 ~ 32767 の範囲の符号付き 16 ビット整数を表します。
Int: -2147483648 ~ 2147483648 の範囲の符号付き 32 ビット整数を表します。
uint: 0 ~ 4294967295 の範囲の符号なし 32 ビット整数を表します。
Long: -9223372036854775808 ~ 9223372036854775808 の範囲の符号付き 64 ビット整数を表します。
Ulong: 0 ~ 18446744073709551615 の範囲の符号なし 64 ビット整数を表します。
char: 0 ~ 65535 の範囲の値を持つ符号なし 16 ビット整数を表します。
Char 型の可能な値は Unicode 文字セットに対応します。
Char 型には、他の整数型と比較して次の 2 つの違いがあります:
a、他の型から char 型への暗黙的な変換はありません。値を表すために char 型を完全に使用できる sbyte、byte、および ushort などの型の場合でも、sbyte、byte、および ushort から char への暗黙的な変換は存在しません。
b、char 型定数は文字形式で記述する必要があります。整数形式を使用する場合は、型変換プレフィックスを付ける必要があります。たとえば、(char)10 には 3 つの代入形式があります:
char chsomechar="A";
char chsomechar="x0065";
char chsomechar="u0065; unicode 表現には次のエスケープ文字があります。 1、' は一重引用符を表すために使用されます
2、" は二重引用符を表すために使用されます
3、\ はバックスラッシュを表すために使用されます
4、10 進数タイプは金融操作に最適です。値の範囲は 1.0*10 -28 ~ 7.9* 10 28 で、小数点以下 28 桁まで正確です。二項演算のオペランドの 1 つが 10 進数型の場合、もう 1 つのオペランドは整数型または 10 進数型になります。整数は演算前に 10 進数型に変換されます。 10 進数型の算術演算で生成された値が 10 進数型の形式に対して小さすぎる場合、演算の結果は 0 になります。 10 進数型の算術演算で 10 進数型の形式には大きすぎる値が生成されると、オーバーフロー エラーがトリガーされます。 10 進数型は浮動小数点型よりも精度が高くなりますが、数値範囲は比較的狭くなります。浮動小数点型数値を 10 進数型数値に変換する場合はオーバーフロー エラーが発生し、10 進数型数値を浮動小数点型数値に変換する場合は精度が失われます。したがって、2 つの型の間で暗黙的または明示的な変換は行われません。ブール型: 値は true または false です。ブール型を他の型に変換するための標準はありません。
1.2 列挙型
列挙型の要素に使用できる型は、long、int、short、byte のみです。デフォルトの型は int です。最初の要素のデフォルト値は 0 で、後続の各要素は 1 ずつ増加します。要素に値を直接割り当てることができます。例:

enum monthnames 
{
January=1,
February, 
march=31
};
可以强制定义其他类型,如:
enum monthnames : byte
{January ,
February,
March
};

1.3 構造型
構造型は値型でもあり、それを使用する目的は、メモリを節約するために小さなオブジェクトを作成することです。次の例は、バイト型の 4 つのフィールドを使用して IP アドレスを表します。

using System;
Struct IP //声明结构
{ 
public byte b1,b2,b3,b4;
}

Class test
{
  public static void Main()
  {
    IP myIP;
    myIP.b1=192;
    myIP.b2=168;
    myIP.b3=1;
    myIP.b4=101;
    Console.Write("{0}.{1}。", myIP.b1, myIP.b2);
    Console.Write("{0}.{1}", myIP.b3, myIP.b4);
}
}

2 参照型
参照型には、クラス型、インターフェイス型、代表型、配列型が含まれます。
2.1 クラス型
クラス型は、データメンバー (定数、フィールド、イベントなど)、関数メンバー (メソッド、プロパティ、インデックス、操作、コンストラクター、分析コンストラクターなど) を含むデータ構造を定義します。など)およびネストされた型。継承がサポートされています。
2.2 オブジェクト型
オブジェクト型は、他のすべての型の最終的な基本型です。 C# のすべての型は、オブジェクト クラス型から直接的または間接的に派生します。
2.3 String型
string型は、オブジェクトから直接継承されたシールされたクラスです。 String型の値は文字列リテラルとして記述できます。
2.4 インターフェイス型
インターフェイスは、抽象メンバーのみを持つ参照型を宣言します。インターフェイスにはメソッド フラグのみがあり、実行コードはありません。クラスを定義する場合、クラスがインターフェイスから派生する場合は複数のインターフェイスから派生できますが、クラスがクラスから派生する場合は 1 つのクラスのみから派生できます。
次のようなメソッドを宣言します:

interface iface
{
void showmyface();
}

2.5 表現型
静的メソッドまたはオブジェクト インスタンスへの参照を表し、オブジェクトのインスタンス メソッドを参照します。最も近いのは C/C++ のポインターですが、ポインターは静的関数にのみアクセスできます。つまり、ポインターは静的メソッドとインスタンス メソッドの両方にアクセスできます。
2.6 配列
配列は、変数のリストを含むデータ構造です。配列変数は、同じ型を持ち、配列要素型とも呼ばれます。配列の要素の型は、配列型を含む任意の型にすることができます。配列では添字を使用して、各配列要素のインデックス番号を決定します。添え字が 1 つだけある配列は 1 次元配列と呼ばれ、添え字が 2 つ以上ある配列は多次元配列と呼ばれます。
例: int[] a={0, 2, 4, 6, 8}; int[] a=new int[] {0, 2, 4, 6, 8}; と同等です
次のように初期化することもできますthis: a[0]=0; a[2]=4; a[4]=8; // の 1 次元配列int type
int[,] a; //int 型の 2 次元配列
int[,,] a; //int 型の 3 次元配列
int[] []a;
int[][ ][]a; // int 型配列の配列
配列の各次元の長さは、配列作成ステートメントで指定されます。配列型で指定します。例:
int[,,] a3=new int[10, 20, 30];
a3 は配列変数です。int[,,] は配列の長さを指定しません。配列作成文 new int[10, 20,30] を指定しています。
次の例では、配列の配列を作成します:
int[][] J=new int[3][];
J[0]=new int[] {1, 2, 3};
J[1]= new int[] {1, 2, 3, 4, 5, 6};
J[2]=new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9};
上記C# データ型の内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。