C#基础总结
?---------------------- Windows Phone 7手機開發、.Net培訓、期待與您交流! ----------------------
?
?.NetFramework簡介
.netframework運行于操作系統之上,提供良好的跨語言特性。
.netframework包含兩個內容:公共語言運行時(CLR)和類庫集(FCL)
MSIL微軟中間語言。當編譯.net支持的語言編寫的代碼的時候,輸出的代碼為MSIL
CLR又包含:通用語言規范(CLS:保證語言互操作性的一組規則)和公共類型系統(CTS:包含了.net支持的各語言間兼容的數據類型和功能)
--------------------------------------------------------------------------------
C#中的變量和常量
C#中的基本數據類型:
值類型和引用類型
值類型:簡單類型、結構類型和枚舉類型。
簡單類型:整數類型、浮點類型、小數類型(decimal)和布爾類型等
sbyte是有符號的,相當java的byte型,范圍-128~127
C#中byte是無符號的,范圍0~255
--------------------------------------------------------------------------------
變量命名方法:
帕斯卡命名法和駱駝命名法
帕斯卡命名法:如果有多個單詞組成,每個單詞首字母大寫
駱駝命名法:如果有多個單詞組成,第一個單詞全部小寫,后面的單詞大寫
--------------------------------------------------------------------------------
C#中的常量:const與readonly兩種
const聲明的常量:叫靜態常量,必須聲明時就初始化,且只能用常數值初始化
readonly聲明的常量:叫動態常量,可以在聲明時不初始化,只能在構造函數中初始化,但必須每個構造函數中都要初始化;而且可以使用變量值初始化
class Test
{
??????? const? float PI = 3.1416f;?????? //常量命名:全部大寫
??????? readonly float G;
??????? public Test()
??????? {
??????????????? G = 9.80F;
??????? }
??????? public Test(float g) //每個構造函數中都要初始化;而且可以使用變量值初始化
??????? {
??????????????? G = g;
??????? }
}
--------------------------------------------------------------------------------
C#中的裝箱和拆箱
裝箱:值類型轉換成有引用類型
拆箱:引用類型轉換成值類型
值類型:存在棧中
引用類型:在堆中存放對象的地址(即引用),對象本身存放在棧中
拆裝箱允許值類型和引用類型相互處理
--------------------------------------------------------------------------------
C#語法
Switch()括號中可以是int ,char和string ,switch語句中的case語句冒號后什么都不寫,可以不寫break,其他情況一定要寫break,否則報錯
數組:五種聲明方式
?? int []array;
?? array = new int[2];
?? //第二種聲明方式
?? int []array1 = new int[2];
?? //第三種聲明方式
?? int []array2 = {1,2,3};
?? //第四種聲明方式
?? int []array3 = new int[]{1,2,3};
?? //第五種聲明方式
?? int []array4 = new int[3]{1,2,3};
?? //數組大小也可以是變量
?? int count = 3;
?? int []arr = new int[count];
?
--------------------------------------------------------------------------------
枚舉:用有意義的字符去訪問數據
public enum Contry:long? //指定枚舉類型,必須是整型,不寫為int型
? {
?? Pacific,???????? //第一個未付值,默認為零
?? China=1860,
?? Japan,
?? US=1901,
?? Canada
?
? }
--------------------------------------------------------------------------------
C#中的面向對象
析構函數:函數名與構造函數名一樣,~函數名(),不接受參數,由垃圾回收器自動調用(GC.Collect()調用垃圾回收器)
?
virtual關鍵字:C#中,子類要重寫父類的方法,必須把父類的方法標識為virtual(虛擬的),同時重寫方法用override修飾
new 關鍵字:new關鍵字:在子類中定義的一個和父類方法簽名一樣,但是個全新的方法。并非重寫父類的方法。
base關鍵字:用base關鍵字調用父類的方法
訪問修飾符:
public 公有的,
internal 在一個項目中的,
protected有父子關系的類,
private僅所屬類的成員
注意:如果有一個類既繼承類又實現接口,類名要寫在接口名前面。
?
--------------------------------------------------------------------------------
屬性,索引器,委托,事件
屬性:訪問修飾一般為public,首字母大寫。屬性內有get和set訪問器,get內必須要有return,set內有value關鍵字,代表從外部接受的值。
索引器:索引器的作用:像處理數組一樣去處理類的對象。
??? public class Student
????? {
????????? private string []obj=new string[10];
????????? //this關鍵字在這里代表每一個類的對象,[]中整數是指通過下標訪問
????????? public string this[int index]??????????? //此是可以通過索引號去訪問每一個類的成員??
????????? {
?????????????? get
?????????????? {
??????????????????? return obj[index];
?????????????? }
?????????????? set
?????????????? {
??????????????????? if(value!=null)
??????????????????? obj[index]=value;
?????????????? }
????????? }
???????? static void Main(string []args)
???????? {
????????????????? Student stucollection=new Student();
?????????????????? stucollection[0]="柯南";
?????????????????? stucollection[1]="小五郎";
?????????????????? stucollection[5]="怪盜基德";
???????? }
????? }
委托:相當于函數指針,可使程序在運行是再指定具體要運行的方法。
(1) 定義委托:Public delegate int Call()
(2) 實例化委托:objcall=new Call(方法名)
(3) 調用委托:objcall();
事件:事件實際上是一種特殊的委托,委托每次只能指向一個方法,而事件可以指向多個方法
(1)定義一個委托public delegate void delegateMe();
(2)定義一個事件 private event delegate eventMe;
(3)訂閱事件??? eventMe+=new delegateMe(方法名1());
?????????????????????? eventMe+=new delegateMe(方法名2());
(4) 引發事件??? if(condition)?? then? eventMe();
?
--------------------------------------------------------------------------------
多線程
創建線程實例:
Thread obj=new Thread(new ThreadStart(方法名稱))
開始:Start();
休眠:Sleep();
終止:Abort();
掛起:Suspend();
恢復:Resume();
當前線程:Thread.CurrentThread
ThreadPriority枚舉值用來指定調度線程的優先級(共5級)
lock關鍵字
C#中通過lock關鍵字提供同步
線程同步:確保不同的線程對共享資源進行訪問時,每次只有一個線程訪問資源。
Lock(this)
{
???? For(int i=0;i<10;i++)
???? {
????????? //語句;
???? }
}
?
--------------------------------------------------------------------------------
數組集合對象
Array: Array和數組很相似,還可以相互轉化和拷貝,很多方法都是是通用, 可以用Array的靜態方法對數組實現反轉,排序,這是數組本身無法做到的
using? system.Array;
Array ar=Array.CreateInstance(typeof(int),5);?? //創建一個Array的實例
ar.SetValue(12,0);????????????????????????? //賦值
?Array.Reverse(ar);??? // 反轉
?Array.Sort(ar);??????? // 排序
ArrayList:最常用的集合之一.集合的好處是在不知道數據大小時,可以實現容量自動增長,而數組做不到.
Add()添加元素
Remove(位置)移除元素
ArrayList al=new ArrayList();
//如果要遍歷集合元素,
?? //方法一:
?? //將集合中的數拷貝到數組中
?? object []temp=al.ToArray();
?? foreach(object t in temp)
?? {
??? Console.WriteLine(t);
?? }
?? //方法二,使用迭代器
?? IEnumerator ie=al.GetEnumerator();
?? while(ie.MoveNext())
?? {
??? Console.WriteLine(ie.Current);
?? }
HashTable:以鍵值對的形式保存值
Hashtable hash=new Hashtable(4);
?hash.Add("中國",1860);?????????
?hash.Add("德國",1940);
?Console.WriteLine(hash["中國"].ToString());通過key獲得value
SortedList :是 Hashtable 和 Array 的混合
能存放鍵值對,類似Hashtable
能通過自身提供的方法通過索引直接遍歷,類似于Array
objsortlist.GetKey(i)?? 方法獲得鍵
objsortlist.GetByIndex(i)方法獲得值
?
?
>---------------------- Windows Phone 7手機開發、.Net培訓、期待與您交流! ---------------------- 詳細請查看:http://net.itheima.com/
轉載于:https://www.cnblogs.com/lovexiao/archive/2012/04/22/2465293.html
總結
- 上一篇: listview移动时 item背景颜色
- 下一篇: XP系统和Sever2003系统现实定时