引用類型:存儲讀數據的內存地址的引用,位於受管制的堆(Heap)上作為引用類型的變量可以引
用同一對象;因此對一個變量的操作會影響另一個變量所引用的同一對象。
值類型可分為3大類:
基本型:
整型
int
如:int i=123; //也可以寫為:System.Int32 i=123;
long
如: long myLong=123; //int型隱式轉換為long型
char
如:char mychar='A'
sbyte byte short ushort uint ulong
注意:(1) 書寫一個常數時(如:23),默認為整型,若要表示非整型,可以用顯式轉換:
如:sbyte k=1;
int i=2;
k=(sbyte)i; //顯式轉換
i=k; //隱式轉換
(2) 不同整型轉換原則:小范圍類型可以隱式轉換為大范圍類型,大范圍類型轉換
為小范圍類型時要使用顯式轉換。
浮點型
float類型:32位浮點數,取值范圍在
double類型:64位浮點數,取值范圍在
布爾型 bool
true false
結構型
struct
如 public struct Point
{
int x;
int y;
string s;
}
結構和類的區別:
結構是一個值類型(在棧上),而類是一個引用
類型(在堆上)。
枚舉型
enum類型
常用形式有:
enum days {Sun,Mon,Tue,Wed,Thu,Fri, Sat};
//第一個成員值默認為0,第二個為1,……
enum days {Mon=1,Tue,Wed,Thu,Fri, Sat, Sun };
//第一個成員值從1開始
enum days {mon=1,wed=3,sun,thu=8};
enum類型的使用示例:
class Test
{
enum days {Sun,Mon,Tue,Wed,Thu,Fri,Sat};
static void Main()
{
Console.WriteLine(days.Wed);
days myday=days.Fri;
Console.WriteLine(myday);
Console.Read();
}
}
引用類型
引用類型包括:類、接口、數組、委托 等。
string類型
string myString = "some text";
char chFirst = myString[2]; //結果為m
當比較兩個字符串是否相等時,可以直接使用“==”比較操作符。
當比較兩個字符串大小時,可以使用string. Compare方法,其返
回值有-1,0,1三種可能。
常用格式舉例:
(1) int i=12345;
this.textBox1.Text=i.ToString();
(6) DateTime dt =new DateTime(2003,5,25);
this.textBox1.Text=dt.ToString("yy.M.d");
//結果 03.5.25
this.textBox2.Text=dt.ToString(“yyyy年M月”);
//結果 2003年5月
(7) int i=123;
double j=123.45;
string s=string.Format("i:{0,-7},j:{1,7}",i,j);
//-7表示左對齊,占7位
this.textBox1.Text=s ;
//結果i:123 ,j: 123.45
//結果 12345(this指當前對象,或叫當前類的實例)
this.textBox2.Text=i.ToString("d8");
//結果 00012345
(2) int i=123;
double j=123.45;
string s1=string.Format("the value is {0,7:d}",i);
string s2=string.Format("the value is {0,7:f3}",j);
this.textBox1.Text=s1 ;
//結果 the value is 123
this.textBox2.Text=s2;
//結果 the value is 123.450
(3) double i=12345.6789
this.textBox1.Text=i.ToString("f2");//結果 12345.68
(4)double i=12345.6789;
this.textBox1.Text=i.ToString("n"); //結果 12,345.68
this.textBox2.Text=i.ToString(“n4”); //結果 12,345.6789
(5)double i=0.126;
string s=string.Format("the value is {0:p}",i);
this.textBox1.Text=i.ToString("p"); //結果 12.6%
this.textBox2.Text=s; //結果 the value is 12.6%
數組
特點:所有的元素類型都相同。
//一維數組
string[] arr={"c","c++"};
string[] mystrings=new string[3];
int[] intArr1=new int[4]{0,1,2,3};
int[] intArr2={5,6,7};
int nvar=5;
//二維數組
int[,] arr = {{0,1}, {2,3}, {4,5}};
int[,] myArr = new int[5,3];
//鋸齒型數組
string[][] stra=new string[3][];
stra[0]=new string[2]{"a11","a12"};
stra[1]=new string[3]{"b11","b12","b13"};
stra[2]=new string[5]{"a","e","i","o","u"};
類型之間的轉換
位數少的轉換為位數多的,可以使用隱式轉換;
位數多的轉換為位數少的,要使用顯式轉換。
裝箱和拆箱
int i=123; //數值類型
object box=i; //裝箱操作
int j=(int)box; //拆箱操作