C#摘要shell
第一章:數組
數據類型:函數
在定義變量的時候,記下規則,開頭不能是數字,變量名只能包括 字母 「_」 數字ui
整型類型 |
CTS類型spa |
說明code |
範圍對象 |
||||||||||||
sbyte繼承 |
System.SByte索引 |
8位有符號的整數 |
-128到127(-27到27-1) |
||||||||||||
short |
System.Int16 |
16位有符號的整數 |
-32768到32767(-215到215-1) |
||||||||||||
int |
System.Int32 |
32位有符號的整數 |
-2147483648到2147483647(-231到231-1) |
||||||||||||
long |
System.Int64 |
64位有符號的整數 |
-9223372036854775808到9223372036854775807(-263到263-1) |
||||||||||||
byte |
System.Byte |
8位無符號的整數 |
0到255(0到28-1) |
||||||||||||
ushort |
System.Uint16 |
16位無符號的整數 |
0到65535(0到216-1) |
||||||||||||
uint |
System.Uint32 |
32位無符號的整數 |
0到4294967295(0到232-1) |
||||||||||||
ulong |
System.Uint64 |
64位無符號的整數 |
0到18446744073709551615(0到264-1) |
||||||||||||
浮點類型 |
CTS類型 |
說明 |
位數 |
範圍 |
|||||||||||
float |
System.Single |
32位單精度浮點數 |
7 |
±1.5×10-45到±3.4×1038 |
|||||||||||
double |
System.Double |
64位雙精度浮點數 |
15/16 |
±5.0×10-324到±1.7×10308 |
|||||||||||
decimal類型 |
CTS類型 |
說明 |
位數 |
範圍 |
|||||||||||
decimal |
System.Decimal |
128位高精度十進制數表示法 |
28 |
±1.0×10-28到±7.9×1028 |
|||||||||||
bool類型 |
CTS類型 |
值 |
|||||||||||||
bool |
System.Boolean |
true或false |
|||||||||||||
char類型 |
CTS類型 |
值 |
|||||||||||||
char |
System.Char |
表示一個16位的(unicode)字符 |
C#裏面也有結構類型:能夠定義數據類型和方法:
struct Person
{
Public char[10] name;
Public int age;
Public output()
{
Console.WriteLine(「{0},{1}」,name,age);
}
}
枚舉類型:
enum Weekday
{
Monday,Tuesday,Wednesday,Thursday,Friday
}
怎麼使用:
Weekday wd1=Weekday.Monday;
Weekday wd2=Weekday.Tuesday;
輸出wd1的值就是Monday;
Wd2的值就Tuesday
關於類就是能夠理解爲特殊的結構類型:類的操做後面再說
數組類型:
C#的數組定義和C++不同:
一維數組定義:int[] shuzu=new int[10];數組空間大小在後面體現;
二維數組定義:int[,] shuzu=new int[2,2];2*2數組
對於數組的初始化:
Int [] shuzu=new int[]{1,2,3};
Int[,] shuzu=new int[2,2]{{1,2},{1,2}};
能夠經過shuzu.lenght這個方法來輸出數組的長度
對於類型間的轉換:隱式和顯示:
例:int a=100;
Long b=(long)a;//顯式
Float c=a//隱式
對於操做符的認識:幾種語言都是同樣的:
+ 加-減 *乘 /除%求餘 ==等於 =賦值
注意點:
B=--a//a先減再賦值
B=a--//a先賦值再減
++同上
對於「?:」這個三元操做符;
(a)?b:c//a取真就得b,取假就得c
控制語句:
If() .......else..
If().....else if().....else if().......
Switch語句:
Switch()
{
Case case1:
Break;
Case case2:
Break;
Case case3:
Break;
Default :
Break;
}
循環語句:
For while do...while
對於for語句都很熟悉
For(int i=0;i<10;i++)這裏強調的是它判斷了11次不是10次
對於while 和do...while的區別據是do....while要比while多執行一次
在C#裏多了一個foreach語句;
用法:int []shuzu=new int[10]{1,2,3,4,5,6,7,8,9,10};
Foreach(int i in shuzu)
{
Console.WriteLine(「{0}」,i);
}//循環取出集合中的值
對於跳轉語句:
Continue break goto return
break,continue
這兩個玩意,太風騷了,都是跳出,但管的範圍不同;
break經常使用在switch中,就是直接跳出,哥們我不幹了,愛咋咋地,說的就是他;
continue經常使用在for或while循環中,他沒break有骨氣,只是偶爾的罷工,而後還得回來繼續幹活,他只是跳出本次循環
break在switch中的應用就不解釋了,在for裏看看:
for(int=0;i<100;i++)
{
if(i==10){
printf("%d",i);//執行到i=10的時候,由於break這貨要罷工,這個循環就停了,只循環了10下就完了
break;}
}
再來看看continue
{
for(int i=0;i<100;i++)
{
if(i==10)
{
continue; //在這當i=10 continue罷工了一次,後面的printf語句不執行了,可是for會從i=11繼續循環
}
printf("%d",i);
}
}
對於goto就是無節操的亂跳,想跳哪跳哪
例:A:
Goto A;
至於return這個就是直接結束這個函數的執行
第二章:
這章主要是講類的結構:
類的成員:成員的類型,能夠是第一章講個各類類型;
固然也能夠是類;
對於成員的訪問權限:四類: private,public,protected ,internal;
對於internal 在定義類的時候,若是沒有標註權限,默認就是internal;
對於類,記住兩句話:成員屬性是對類特徵的描述,成員方法是對類行爲的描述;
對於類裏面的靜態成員和非靜態成員:注意對他們的
例:class Student
{
Public static int a=1;
Public int b;
Public static void print()
{
}
Public void print1()
{
}
}
對於靜態的調用就是
Student.print();
Student.a=2;//這個就是把類自己的a的值給換了
而對於非靜態的調用就是先new對象
Student stu=new Student();
Stu.print1();
Stu.b=2;
記住這個字段,在考題裏會問,怎麼定義常量字段,在C#裏有一個const,這個字段至關於C/C++裏的 #define;
還有一個readonly顧名思義就是隻讀不能改;
對於方法有幾點要注意:
方法參數:值傳遞和引用傳遞。重點記憶;
值傳遞都知道,下面看看C#裏的引用傳遞:
例:
Void swap(ref int a,ref int b)
{
Int c=a;
A=b;
B=c;
}
在main函數調用:
Main()
{
Int a=2,b=3;
Swap(ref a,ref b);
}
上面的例子要好好看看,考試重點;
對於數組作參數:C#規定 方法裏只能有一個數組作參數,必須寫在最後一個參數上,還必須是一維的,不能同時做爲引用參數或輸出參數;
對於方法的重載:
1.不能根據返回值來使用重載//注意這個
2.根據參數類型使用重載
3.根據參數個數使用重載;
構造函數和析構函數:
構造函數是在建立對象時就被調用,不能有返回值;
析構函數是在建立對象後調用的,目的是打掃後事;
課本上還有個靜態構造函數,這個沒用過,但也講講,它一輩子就被用一次,也就是首次使用這個類的時候,第一個建立對象的時候被使用,再對類建立對象的時候就不被調用了;
Class Student
{
//構造函數
Public Student(){
Console.WriteLine(「開始」);
}
//靜態構造函數
Public static Student(){
Console.WriteLine(「個人第一次」);
}
//析構函數
~Student(){
Console.WriteLine(「結束」);
}
}
Student stu1=new Student();
//輸出:開始
個人第一次
結束
Student stu2=new Student();
//輸出:開始
結束
對於類的屬性:屬性要被封裝纔可靠;
用get set來索引;
封裝的好處就是,對技術細節進行隱藏//這點要記住
對於操做符的重載:
能夠看看書P65的例子,能夠看下;
對於this,就是代指本對象,沒別的意思;
當在繼承父類時,調用父類屬性時用base;就是區別下;