一、分類
C# 數(shù)據(jù)類型分為: 值類型、引用類型
值類型主要由兩類組成:結(jié)構(gòu)、枚舉
結(jié)構(gòu)分為以下幾類:Numeric(數(shù)值)類型(整形 浮點型 decimal)、 bool 、用戶自定義結(jié)構(gòu)
引用類型包括: 類 class (Object、String)、代表 delegate、數(shù)組 Array、接口 interface
二、值類型
整形
類型 范圍 大小
sbyte -128 到 127 有符號 8 位整數(shù)
byte 0 到 255 無符號 8 位整數(shù)
char U+0000 到 U+ffff 16 位 Unicode 字符
short -32,768 到 32,767 有符號 16 位整數(shù)
ushort 0 到 65,535 無符號 16 位整數(shù)
int -2,147,483,648 到 2,147,483,647 有符號 32 位整數(shù)
uint 0 到 4,294,967,295 無符號 32 位整數(shù)
long -9,223,372,036,854,775,808 到
9,223,372,036,854,775,807 有符號 64 位整數(shù)
ulong 0 到 18,446,744,073,709,551,615 無符號 64 位整數(shù)
浮點型
類型 大致范圍 精度
float ±1.5e−45 到 ±3.4e38 7 位
double ±5.0e−324 到 ±1.7e308 15 到 16 位
decimal(十進制)
類型 大致范圍 精度 .NET Framework 類型
decimal ±1.0 × 10e−28 至 ±7.9 × 10e28 28 到 29 位有效位 System.Decimal
如果希望實數(shù)被視為 decimal 類型,請使用后綴 m 或 M,如果沒有后綴 m,數(shù)字將被視為 double 類型,例如:decimal myMoney = 300.5m;
布爾類型(bool)
布爾類型就是用來表示“真”和“假”這兩個概念的,C# 中用“thrue”和“false”連個值來表示,其他任何值的表示方法都是錯誤的。
結(jié)構(gòu)(struct)
把一系列相關(guān)的變量組成一個單一實體的過程叫做結(jié)構(gòu)化過程,組成的單一實體就是結(jié)構(gòu)。
例子:
public struct PhoneBook
{
public String name;
public String phone;
public struct address
{
public String city;
public String street;
}
}
PhoneBook p1;
對結(jié)構(gòu)成員的訪問可以通過結(jié)構(gòu)變量名加上訪問符“.”然后在加上成員名的方式訪問,例如,p1.name = "Tom";
枚舉(enum)
枚舉類型實際是為一組在邏輯上密不可分的整數(shù)值提供便于記憶的符號,例如聲明一個代表星期的枚舉變量類型:
enum WeekDay{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};
WeekDay day;
枚舉類型的變量在某一時刻只能取枚舉中某一個元素的值。
枚舉中的第一個元素的值為0,后面的每個元素安加1遞增。在枚舉中也可以給元素直接賦值,例如把星期天的值設(shè)為1,其后的元素的值分別為2,3...
enum WeekDay{Sunday=1,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};
為枚舉類型的元素所賦的值的類型限于long、int、short和byte等整數(shù)類型。
三、引用類型
類: 是一種包含數(shù)據(jù)成員、函數(shù)成員、嵌套類型的數(shù)據(jù)結(jié)構(gòu)。其中數(shù)據(jù)成員包括常量、域和事件,函數(shù)成員包括方法、屬性、索引指示器、運算符、構(gòu)造函數(shù)和析構(gòu)函數(shù)。
Object、String 是兩個常用的類。
Object 是所有其他類型的基類,C#中所有類型都直接或間接的從Object
中繼承,因此對于一個 Object 的變量可以賦予任何類型的值。
String 類 是專門用于對字符串的操作。
代表: 聲明代表時只需要指定代表指向的原型的類型,代表不能有返回值也不能帶有輸出類型的參數(shù)。
代表的示例:
using System;
delegate int MyDelegate();
public class MyClass
{
public int InstanceMethod()
{
Console.WriteLine("Call Instance Method");
return 0;
}
public static int StaticMethod()
{
Console.WriteLine("Call Static Method");
return 0;
}
}
public class Test
{
public static void Main()
{
MyClass p = new MyClass();
MyDelegate d = new MyDelegate(p.InstanceMethod);
d();
d = new MyDelegate(MyClass.StaticMethod);
d();
}
}
輸出結(jié)果為:
Call Instance Method
Call Static Method
數(shù)組: 是一組類型相同的有序數(shù)據(jù)。數(shù)組按照數(shù)組名、數(shù)據(jù)元素類型、數(shù)組維數(shù)來描述數(shù)組。System.Array 類是所有數(shù)組元素的基類。C# 中數(shù)組元素的下標是從 0 開始的。
數(shù)組示例:
int[] arr = new int[5]
int[] arr = new int[]{1,2,3}
int[] arr = new int[5]{1,2,3,4,5}
int[,] arr = new int[2,2];
int[,] arr = new int[2,3]{{1,2,3},{4,5,6}}
裝箱:裝箱轉(zhuǎn)換是指將一個值類型隱式的轉(zhuǎn)換成 Object 類型,或者把這個值類型轉(zhuǎn)換成一個被該值類型應(yīng)用的接口類型。
裝箱示例:
using System;
public class Test
{
public static void Main()
{
int i = 10;
Object obj = i;
if (obj is int)
{
Console.WriteLine("The Value of i is Boxing!");
}
i = 20;
Console.WriteLine("int i = {0}",i);
Console.WriteLine("object obj = {0}",obj);
}
}
輸出結(jié)果為:
The Value of i is Boxing!
int i = 20
object obj = 10;
此例不光說明了裝箱的操作同時也說明被裝箱的類型的值是作為一個拷貝賦給對象的。
拆箱:拆箱轉(zhuǎn)換是指將一個對象類型顯示的轉(zhuǎn)換成值類型,或者是將一個接口類型顯示的轉(zhuǎn)換成一個執(zhí)行該接口的值類型。
例如:
int i = 10;
Object obj = i;
int j = (int)obj;