版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、黑馬程序員C#學(xué)習(xí)筆記 錯誤的理解希望能夠得到大家的指正,謝謝!/*實現(xiàn)了IDisposable接口的所有的對象在使用完以后要進(jìn)行Dispose()資源的釋放,可以使用using()進(jìn)行資源管理*/創(chuàng)建連接是非常耗時的,因此不要每次操作都創(chuàng)建連接。SQL語句中的關(guān)鍵字應(yīng)該大寫。/1個數(shù)據(jù)庫能夠承載的連接是有限的,所以SqlConnection在程序中不能一直保持Open。/對于數(shù)據(jù)庫來說,連接是最寶貴的資源,用完了以后一定要Close、Dispose。/ 類是對象的抽象,而對象是類的具體實例。類是抽象的,不占用內(nèi)存,而對象是具體的,占用存儲空間。/元數(shù)據(jù):用于描述要素、數(shù)據(jù)集或數(shù)據(jù)
2、集系列的內(nèi)容、覆蓋范圍、質(zhì)量、管理方式、數(shù)據(jù)的所有者、數(shù)據(jù)的提供方式等有關(guān)的信息。元數(shù)據(jù)最本質(zhì)、最抽象的定義為:data about data(關(guān)于數(shù)據(jù)的數(shù)據(jù))。它是一種廣泛存在的現(xiàn)象,在許多領(lǐng)域有其具體的定義和應(yīng)用。/元數(shù)據(jù)在軟件構(gòu)造領(lǐng)域定義:在程序中不是被加工的對象,而是通過其值的改變來改變程序的行為的數(shù)據(jù)。它在運行過程中起著以解釋方式控制程序行為的作用。在程序的不同位置配置不同值的元數(shù)據(jù),就可以得到與原來等價的程序行為。 .NET Framework基礎(chǔ)類型:.NET所有類型都繼承自System.Object。C#類型體系包含兩種類型:值類型,引用類型。值類型繼承自System
3、.ValueType。而System.ValueType繼承自System.Object。指針:在信息工程中指針是一個用來指示一個內(nèi)存地址的計算機語言的變量或中央處理器(CPU)中寄存器(Register)。指針一般出現(xiàn)在比較近機器語言的語言,如匯編語言或C語言。在使用一個指針時,一個程序既可以直接使用這個指針?biāo)鎯Φ膬?nèi)存地址,又可以使用這個地址里存儲的變量或函數(shù)的值。寄存器:寄存器是中央處理器內(nèi)的組成部分。寄存器是有限存儲容量的高速存儲部件,它們可用來暫存指令、數(shù)據(jù)和位址。寄存器擁有非常高的讀寫速度,所以在寄存器之間的數(shù)據(jù)傳送非???。C#中使用指針:為了保持類型安全,默認(rèn)情況下C#不支持指針
4、運算。不過可以通過使用unsafe關(guān)鍵字來定義允許使用指針的不安全上下文。C#中的不安全代碼不一定是危險的,只是其安全性無法由CLR進(jìn)行驗證。編譯不安全代碼時需要使用csc /unsafe *.cs。class Program unsafe static void Method(int* parameter)/聲明一個int類型的指針 *parameter += *parameter;/指針相加 unsafe static void Main() int parameter = Convert.ToInt32(Console.ReadLine(); Method(¶meter)
5、; Console.WriteLine(parameter); Console.ReadKey(true); 值類型:值類型直接存儲值一種由類型的實際值表示的數(shù)據(jù)類型。如果向一個變量分配值類型,則該變量將被賦以全新的值副本。C#中的值類型包括結(jié)構(gòu)類型和枚舉類型兩大類以及byte、int、long、float、double、char、boolean。引用類型:引用類型存儲的是對值的引用由類型的實際值引用表示的數(shù)據(jù)類型。如果為某個變量分配一個引用類型,則該變量將引用(或"指向")原始值,不會創(chuàng)建副本。引用類型包括類、接口、委托和裝箱值類型。C#有兩個內(nèi)置的引用類型:object
6、類型和string類型。常量與變量:常量:常量又叫常數(shù),主要用來存儲在程序運行的過程中值不會改變的數(shù)據(jù)。常量被聲明為字段,通過const關(guān)鍵字聲明,常量必須在聲明時賦值。變量:變量是指在程序運行的過程中值可以改變的數(shù)據(jù)。數(shù)據(jù)類型轉(zhuǎn)換:顯示類型轉(zhuǎn)換:顯示類型轉(zhuǎn)換是將高精度數(shù)值轉(zhuǎn)換為低精度數(shù)值,必須指明將要轉(zhuǎn)換的目標(biāo)類型。由于數(shù)據(jù)類型的差異,有可能丟失部分?jǐn)?shù)據(jù)。隱式(自動)類型轉(zhuǎn)換:隱式類型轉(zhuǎn)換又稱自動類型轉(zhuǎn)換,是將低精度數(shù)值轉(zhuǎn)換為高精度數(shù)值,可以直接賦值而不用指明將要轉(zhuǎn)換的目標(biāo)類型。進(jìn)制轉(zhuǎn)換:int i = 10;Console.WriteLine("十進(jìn)制轉(zhuǎn)二進(jìn)制:"+Co
7、nvert.ToString(i, 2);Console.WriteLine("十進(jìn)制轉(zhuǎn)八進(jìn)制:"+Convert.ToString(i, 8);Console.WriteLine("十進(jìn)制轉(zhuǎn)十六進(jìn)制:"+Convert.ToString(i, 16);Console.WriteLine("二進(jìn)制轉(zhuǎn)十進(jìn)制:"+Convert.ToInt32("1010",2);Console.WriteLine("八進(jìn)制轉(zhuǎn)十進(jìn)制:"+Convert.ToInt32("10",8);Conso
8、le.WriteLine("十六進(jìn)制轉(zhuǎn)十進(jìn)制:" + Convert.ToInt32("a",16);Console.ReadKey(true);C#中運算符的使用:算術(shù)運算符:+、-、*、/、%Console.WriteLine(10 +0.5+.5);/"+"運算符用于兩個數(shù)值相加,當(dāng)其中一個或兩個操作數(shù)都是字符或字符串時,表示相連Console.WriteLine("10" + 5);Console.WriteLine('a' + "10");int i = -10;Con
9、sole.WriteLine(-i);/"-"運算符可以是一元運算符也可以是二元運算符Console.WriteLine(10 - 0.5 - .5);/一元運算符表示只用一個參數(shù)的運算,二元運算符表示符號左右兩邊用到了兩個參數(shù)Console.WriteLine(10 * i);/"*"運算符用于計算操作數(shù)的積Console.WriteLine(double)6 / 25);/"/"運算符用于計算操作數(shù)的商Console.WriteLine(100 % 6);/"%"運算符用于計算操作數(shù)的余數(shù)Console.Rea
10、dKey(true);賦值運算符:=、+=、-=、*=、/=、%=、?int i = 100;/"="運算符表示將右邊的值賦給左邊的變量或常量i += 10;/"+="運算符等同于 i=i+10i -= 10;/"-="運算符等同于 i=i-10i /= 10;/"/="運算符等同于 i=i/10i *= 10;/"*="運算符等同于 i=i*10i %= 3;/"%="運算符等同于 i=i%10Console.WriteLine(i);int? x = null;/int?
11、 可空類型,表示一個可能是空,也可能是int的結(jié)構(gòu)int y = x ? 10;/如果x是null,則y=10,否則y=xConsole.WriteLine(y);Console.ReadKey(true);關(guān)系運算符:=、!=、>、<、>=、<=、關(guān)系運算符用于實現(xiàn)對兩個值的比較運算,關(guān)系運算符在完成對兩個操作數(shù)的比較運算后會返回一個代表運算結(jié)果的布爾值。bool result = 2 = 1;Console.WriteLine(result);Console.WriteLine(2 != 3);Console.WriteLine(5 > 6);Console.
12、WriteLine(6>=5);Console.ReadKey(true);邏輯運算符:&&、|、!Console.WriteLine(true|false);/邏輯或運算,運算符左右有一個true則結(jié)果為true,否則為falseConsole.WriteLine(true && false);/邏輯與運算,運算符左右有一個false則結(jié)果為false,否則為trueConsole.WriteLine(!true);/邏輯非運算,對布爾值取反Console.ReadKey(true);條件運算符:?:static void Main(string arg
13、s) Console.Write("用戶名:"); string userName = Console.ReadLine(); Console.Write("密碼:"); string password = Console.ReadLine(); bool result = (userName = "admin" && password = "admin"); string strInfo = result ? "登錄成功!" : "登錄失敗!"/result
14、為true時就把"登錄成功!"賦給strInfo Console.WriteLine(strInfo); Console.ReadKey(true);移位運算符:<<、>>左移位運算:按二進(jìn)制形式把所有的數(shù)字向左移動對應(yīng)的位數(shù),高位移出(舍棄),低位的空位補零。在數(shù)字沒有溢出的前提下,對于正數(shù)和負(fù)數(shù),左移n位就相當(dāng)于乘以2的n次方。右移位運算:按二進(jìn)制形式把所有的數(shù)字向右移動對應(yīng)的位數(shù),低位移出(舍棄),高位的空位補符號位,即正數(shù)補零,負(fù)數(shù)補1。對于正數(shù)和負(fù)數(shù),右移n位就相當(dāng)于除以2的n次方。class Program static void Mai
15、n(string args) /1111111111111111111111111111111111111111111111111111111110011100 << 3 /=1111111111111111111111111111111111111111111111111111110011100000 (-100 << 3 = -800) /0000 1100 1000 >> 3=0000 0001 1001 (200 >> 3 = 25) int one = -100, two = 200; int temp = one << 3
16、;/將變量one的值左移3位。 Console.WriteLine("-100 << 3 = " + temp.ToString(); temp = two >> 3;/將變量two的值右移3位。 Console.WriteLine("200 >> 3 = " + temp.ToString(); Console.ReadKey(true); is 運算符:is運算符用于檢查變量是否為指定的類型,如果是返回true,否則返回false。class Program static void Main(string args
17、) int i = 10; bool result = i is int;/判斷變量 i 是否為整型 Console.WriteLine(result.ToString(); Console.ReadKey(true); 枚舉類型:class Program enum 功夫 /使用enum創(chuàng)建枚舉 降龍十八掌 = 0, 如來神掌 = 1, 葵花寶典 = 2, 九陽神功 = 3, 獨孤九劍 = 4, 太極拳 = 5 static void Main(string args) Console.WriteLine("小子,我看你骨骼驚奇,必是練武奇才,將來維護宇宙正義與和平的重任就交給你了
18、!"); int 學(xué)習(xí) = 0; if (學(xué)習(xí) > 5 | int.TryParse(Console.ReadLine(),out 學(xué)習(xí))=false) Console.WriteLine("你什么也沒有學(xué)會!"); else switch (學(xué)習(xí)) case (int)功夫.降龍十八掌: Console.WriteLine("你學(xué)會了降龍十八掌!"); break; case (int)功夫.如來神掌: Console.WriteLine("你學(xué)會了如來神掌!"); break; case (int)功夫.葵花寶典:
19、 Console.WriteLine("你學(xué)會了葵花寶典!"); break; case (int)功夫.九陽神功: Console.WriteLine("你學(xué)會了九陽神功!"); break; case (int)功夫.獨孤九劍: Console.WriteLine("你學(xué)會了獨孤九劍!"); break; case (int)功夫.太極拳: Console.WriteLine("你學(xué)會了太極拳!"); break; default: Console.WriteLine("你什么也沒有學(xué)會!"
20、); break; Console.ReadKey(true); Char類的使用:class Program static void Main(string args) char a = 'a', b = '8', c = 'L', d = '.', e = ' ', f = ' ' Console.WriteLine("IsLetter方法判斷a是否為字母:0", Char.IsLetter(a); Console.WriteLine("IsDigit方法判斷b是否
21、為數(shù)字:0", Char.IsDigit(b); Console.WriteLine("IsLetterOrDigit方法判斷c是否為字母或數(shù)字:0", Char.IsLetterOrDigit(c); Console.WriteLine("IsLower方法判斷a是否為小寫字母:0", Char.IsLower(a); Console.WriteLine("IsUpper方法判斷c是否為大寫字母:0", Char.IsUpper(c); Console.WriteLine("IsPunctuation方法判斷d是
22、否為標(biāo)點符號:0", Char.IsPunctuation(d); Console.WriteLine("IsSeparator方法判斷e是否為分隔符:0", Char.IsSeparator(e); Console.WriteLine("IsWhiteSpace方法判斷f是否為空白:0", Char.IsWhiteSpace(f); Console.ReadKey(true); 流程控制語句:選擇結(jié)構(gòu):if(boolean )語句塊 else語句塊switch(表達(dá)式)case 常量表達(dá)式:語句塊 break;default:語句
23、塊 break;循環(huán)結(jié)構(gòu):while(boolean)語句塊 、do語句塊while(boolean)for(聲明int類型變量并賦值;判斷產(chǎn)生循環(huán)的條件;要循環(huán)的表達(dá)式)語句塊foreach(類型 循環(huán)變量名 in 集合)語句塊跳轉(zhuǎn)語句:break(終止循環(huán))語句只能應(yīng)用在switch、while、do.while、for或foreach語句中,break語句應(yīng)用于循環(huán)作用域中。continue(忽略本次循環(huán),繼續(xù)下次循環(huán))語句只能應(yīng)用于while、do.while、for或foreach語句中,continue語句應(yīng)用于循環(huán)作用域中。goto語句用于將控制轉(zhuǎn)移到由標(biāo)簽標(biāo)記的語句。goto
24、標(biāo)簽; 標(biāo)簽: 語句塊return語句用于終止當(dāng)前執(zhí)行的方法、可以有返回值。數(shù)組:一維數(shù)組:int arr;/*聲明數(shù)組*/*初始化數(shù)組*/ int arr = new int5;/*表示數(shù)組長度是5*/int arr = 1, 2, 3 ;int arr = new int 1, 2, 3;二維數(shù)組:int, arr;/*聲明數(shù)組*/*初始化數(shù)組*/int, arr1 = new int3, 3;int, arr2 = new int2,2 1,2,3,4;static void Main() int, arr = new int, 1, 3 , 2, 4 , 5, 7 , 6, 8 ; C
25、onsole.Write("數(shù)組的行數(shù):" + arr.GetLength(0);/輸出二維數(shù)組的行數(shù) Console.Write("t數(shù)組的列數(shù):" + arr.GetLength(1);/輸出二維數(shù)組的列數(shù) Console.WriteLine(); Console.WriteLine("循環(huán)輸出數(shù)組中的元素:"); for (int y = 0; y < arr.GetLength(1);y+ ) Console.Write("t第" + y + "列"); Console.Write
26、Line(); for (int i = 0; i < arr.GetLength(0);i+ )/遍歷二維數(shù)組 string str = "" for (int x = 0; x < arr.GetLength(1);x+ ) str = str + Convert.ToString(arri, x)+"t" Console.WriteLine("第"+i+"行: "+str); Console.ReadKey(true);ArrayList:動態(tài)數(shù)組,可以動態(tài)的添加和刪除元素。ArrayList的容
27、量可以根據(jù)需要自動擴充,只能是一維的形式。class Program static void Main() int arr = new int 1, 2, 3, 4, 5, 6 ; Array.Reverse(arr);/反轉(zhuǎn)整個一維數(shù)組中元素的順序 foreach (int i in arr) Console.Write(i); Console.WriteLine(); ArrayList list = new ArrayList(arr);/實例化ArrayList動態(tài)數(shù)組并賦初值 list.Add("你好!");/增加數(shù)據(jù)到動態(tài)數(shù)組中 list.AddRange(ar
28、r);/添加集合到動態(tài)數(shù)組的末尾 Console.WriteLine(list.Contains(5);/判斷指定元素是否在數(shù)組中 Console.WriteLine(list.IndexOf(5);/輸出指定元素在數(shù)組中的索引位置,如果沒有找到輸出-1 list.Insert(0, "Hi!");/插入數(shù)據(jù)到指定的位置 list.Remove("你好!");/"你好!"被看做是一個元素,根據(jù)元素內(nèi)容移除一個指定的元素 list.RemoveAt(1);/根據(jù)元素的索引移除一個指定的元素 list.RemoveRange(1, lis
29、t.Count - 1);/移除指定范圍內(nèi)的所有元素 foreach (object obj in list) Console.Write(obj); list.Clear();/移除所有元素 Console.ReadKey(true); 哈希表Hashtable:散列表也叫哈希表。它表示鍵/值(key,value)對的集合。class Program static void Main() Hashtable htable = new Hashtable();/實例化Hashtable對象 htable.Add(1, "你好!");/向哈希表中添加元素 htable.Add
30、(2, "很好!"); for (int i = 0; i <= htable.Count;i+ ) Console.Write(htablei); Console.WriteLine(); htable.Remove(1);/移除元素的鍵 Console.WriteLine(htable2);/輸出哈希表中指定鍵的值 htable.Clear(); htable.Add("姓名", "張耕明"); htable.Add("年齡", 26); Console.WriteLine("t鍵t值"
31、;); foreach (DictionaryEntry dicEntry in htable) Console.WriteLine("t" + dicEntry.Key + "t" + dicEntry.Value); Console.WriteLine(htable.ContainsKey("姓名");/判斷哈希表中是否包含指定的鍵 Console.WriteLine(htable.ContainsValue("張耕明");/判斷哈希表中是否包含指定的值 Console.ReadKey(true); 靜態(tài)和非靜
32、態(tài):static class 靜態(tài)類/靜態(tài)類不能實例化,只能包含靜態(tài)成員和靜態(tài)方法,靜態(tài)成員或方法只能由類來訪問 private static string _str; static 靜態(tài)類()/靜態(tài)構(gòu)造函數(shù)不能帶有參數(shù),不能有訪問修飾符,在調(diào)用類成員時執(zhí)行 _str = "Static Class!" public static void StaticDemo() Console.WriteLine(_str); class 非靜態(tài)類 private string _str;/非靜態(tài)字段只能由對象來訪問 public 非靜態(tài)類(string source) this._s
33、tr = source;/this等同于類的實例對象:“非靜態(tài)類 c = new 非靜態(tài)類();” public void Demo() Console.WriteLine("非靜態(tài)方法!-" + this._str); 靜態(tài)類.StaticDemo();非靜態(tài)類 noStaticDemo = new 非靜態(tài)類("非靜態(tài)構(gòu)造函數(shù)!");noStaticDemo.Demo();特性:特性提供功能強大的方法,用以將元數(shù)據(jù)或聲明信息與代碼(程序集、類型、方法、屬性等)相關(guān)聯(lián)。特性與程序?qū)嶓w關(guān)聯(lián)后,即可在運行時使用名為“反射”的技術(shù)查詢特性。class Prog
34、ram static void Main(string args) MemberInfo info = typeof(Demo);/提供對成員元數(shù)據(jù)的訪問 /Attribute.GetCustomAttribute(類的元數(shù)據(jù), 要搜索的自定義屬性的類型或者基類型) 特性 attribute = (特性)Attribute.GetCustomAttribute(info, typeof(特性); attribute.Show(); Console.ReadKey(true); AttributeUsageAttribute(AttributeTargets.All, AllowMultiple
35、 = true, Inherited = false)/可應(yīng)用任何元素、允許應(yīng)用多次、不繼承到派生類 class 特性 : System.Attribute private string _name; public string Name get return _name; private int _age; public int Age get return _age; public 特性(string name, int age) this._name = name; this._age = age; public void Show() Console.WriteLine("姓
36、名:0,年齡:1", _name, _age); 特性("張耕明", 28) public class Demo 序列化和反序列化:序列化就是指將對象狀態(tài)轉(zhuǎn)換為可存儲或可傳輸格式的過程,而反序列化則是從物理介質(zhì)或流上獲取數(shù)據(jù),并還原為對象的過程。Serializable/指示一個類可以序列化 public class 序列化和反序列化 public string Name get; set; public int Age get; set; public 序列化和反序列化(string name, int age) this.Name = name; this.A
37、ge = age; public static void BinarySerialize(序列化和反序列化 source) FileStream fs = new FileStream("MySerialize.bin", FileMode.Create); BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(fs, source);/執(zhí)行二進(jìn)制序列化 fs.Dispose(); public static 序列化和反序列化 BinaryDeserialize() FileStream
38、 fs = new FileStream("MySerialize.bin", FileMode.Open, FileAccess.Read, FileShare.Read); BinaryFormatter formatter = new BinaryFormatter(); 序列化和反序列化 serialize = formatter.Deserialize(fs) as 序列化和反序列化;/執(zhí)行二進(jìn)制反序列化 fs.Dispose(); return serialize; 序列化和反序列化.BinarySerialize(new 序列化和反序列化("張耕明&
39、quot;, 28);/序列化序列化和反序列化 deserialize = 序列化和反序列化.BinaryDeserialize();/反序列化Console.WriteLine("姓名:0,年齡:1", deserialize.Name, deserialize.Age);序列化和反序列化 serialize = new 序列化和反序列化("張耕明", 29);XmlSerializer xmlSerialize = new XmlSerializer(typeof(序列化和反序列化);StreamWriter streamW = new Stream
40、Writer("Myserialize.xml");xmlSerialize.Serialize(streamW, serialize);/執(zhí)行xml序列化streamW.Dispose();FileStream fileStream = new FileStream("Myserialize.xml", FileMode.Open);序列化和反序列化 xmlDeserialize = xmlSerialize.Deserialize(fileStream) as 序列化和反序列化;/執(zhí)行xml反序列化Console.WriteLine("XM
41、L反序列化-姓名:0,年齡:1", xmlDeserialize.Name, xmlDeserialize.Age);fileStream.Dispose();屬性和方法:屬性是實體的描述性性質(zhì)或特征,具有數(shù)據(jù)類型、域、默認(rèn)值三種性質(zhì)。屬性有訪問器,當(dāng)讀取屬性時執(zhí)行g(shù)et訪問器的代碼塊;當(dāng)向?qū)傩苑峙湟粋€新值時執(zhí)行set訪問器的代碼塊。不具有set訪問器的屬性被視為只讀屬性,不具有g(shù)et訪問器的屬性被視為只寫屬性,同時具有g(shù)et和set訪問器的屬性是可讀可寫屬性。屬性不能作為ref參數(shù)或者out參數(shù)傳遞。訪問級別:public:公共的、全局的,表示不限制對該類成員的訪問private:
42、私有的,表示只有該類本身可以訪問protected:受保護的,表示只有該類本身和他的子類可以訪問internal:內(nèi)部的,表示程序集內(nèi)可訪問構(gòu)造函數(shù)(方法)和析構(gòu)函數(shù):構(gòu)造函數(shù):構(gòu)造函數(shù)是在創(chuàng)建給定類型的對象時執(zhí)行的類方法。構(gòu)造函數(shù)具有與類相同的名稱,它通常用來初始化新對象的數(shù)據(jù)成員。析構(gòu)函數(shù):是以加類名來命名的,.NET Framework類庫有垃圾回收功能。當(dāng)某個類的實例被認(rèn)為是不再有效,并符合析構(gòu)條件時,.NET Framework類庫的垃圾回收功能就會調(diào)用該類的析構(gòu)函數(shù)實現(xiàn)垃圾回收。一個類中只能有一個析構(gòu)函數(shù),并且無法調(diào)用析構(gòu)函數(shù),它是被自動調(diào)用的。class Program stri
43、ng id, name; Program()/析構(gòu)函數(shù) Console.WriteLine("垃圾回收!"); Console.ReadLine(); public Program() id ="01" name = "未命名" public Program(string id, string name) this.id = id; = name; static void Main() Program p = new Program();/使用沒有參數(shù)的構(gòu)造函數(shù) Program p1 = new Program(&
44、quot;001", "張耕明");/使用有參數(shù)的構(gòu)造函數(shù) Console.WriteLine(); Console.WriteLine(); Console.ReadKey(true); 方法的重載:方法的重載要求參數(shù)的類型不同或者參數(shù)的個數(shù)不同,與方法的返回值無關(guān)。class Program static void Main(string args) Program.說("Computer"); Program.說("聯(lián)想", 5); Console.ReadKey(true); static
45、void 說(string 姓名) Console.WriteLine("電腦說:我的名字是0。" ,姓名); static void 說(string 品牌,int 年齡 ) Console.WriteLine("電腦說:我誕生于0公司,現(xiàn)在1歲了!", 品牌, 年齡); 結(jié)構(gòu):結(jié)構(gòu)是一種值類型,通常用來封裝一組相關(guān)的變量。C#中使用struct關(guān)鍵字來聲明結(jié)構(gòu),struct不能從class繼承,也不能作為class的基類。支持接口繼承。class Program public struct Rectangle/定義一個矩形結(jié)構(gòu) private dou
46、ble _width; private double _height; / <summary> / 構(gòu)造函數(shù),初始化矩形的寬和高 / </summary> / <param name="x">矩形的寬</param> / <param name="y">矩形的高</param> public Rectangle(double x, double y) _width = x; _height = y; / <summary> / 計算矩形的面積 / </summary
47、> / <returns>矩形面積</returns> public double Area() return _width * _height; static void Main() Rectangle rectangle = new Rectangle(3.5, 10);/使用構(gòu)造函數(shù)實例化矩形結(jié)構(gòu)并賦初值 Console.WriteLine("矩形的面積是:" + rectangle.Area(); Console.ReadKey(true); 深拷貝和淺拷貝:class 深拷貝和淺拷貝 private string _shallow;
48、/ <summary> / 淺拷貝 / </summary> public void ShallowCopy() 深拷貝和淺拷貝 instance1 = new 深拷貝和淺拷貝(); 深拷貝和淺拷貝 instance2 = instance1;/淺拷貝,拷貝對象和源對象都指向同一個實例 instance1._shallow = "Hello C#!" instance2._shallow = "Shallow Copy!" Console.WriteLine("淺拷貝:0、1", instance1._shallow, instance2._shallow); / <summary> / 深拷貝 / </summary> public void DeepCopy() int a = 100; int b = a;/深拷貝,拷貝對象和源對象相互獨立,不共享任何實例數(shù)據(jù) a = 500; b = 1000; Console.WriteLine("深拷貝:0、1", a, b); 裝箱與拆箱:class 裝箱與拆箱 public void Demo()/裝箱只發(fā)生在值類型,引用類型本身就已經(jīng)裝在箱子里了(箱子指托管堆)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《威海節(jié)日習(xí)俗》課件
- 《室內(nèi)設(shè)計課件》課件
- 單位管理制度集合大合集人力資源管理篇
- 單位管理制度合并選集【員工管理篇】十篇
- 單位管理制度分享匯編員工管理篇
- 單位管理制度分享大全人員管理篇十篇
- 《審計與管理》課件
- 《客房優(yōu)化方案》課件
- 《診斷思路》課件
- (高頻選擇題50題)第2單元 社會主義制度的建立與社會主義建設(shè)的探索(解析版)
- 勞務(wù)派遣協(xié)議書(吉林省人力資源和社會保障廳制)
- 水庫移民安置檔案分類大綱與編號方案
- 醫(yī)院安全生產(chǎn)風(fēng)險分級管控和隱患排查治理雙體系
- GA 1802.2-2022生物安全領(lǐng)域反恐怖防范要求第2部分:病原微生物菌(毒)種保藏中心
- 企業(yè)EHS風(fēng)險管理基礎(chǔ)智慧樹知到答案章節(jié)測試2023年華東理工大學(xué)
- 健身俱樂部入場須知
- 《古蘭》中文譯文版
- 井下機電安裝安全教育培訓(xùn)試題及答案
- TZJXDC 002-2022 電動摩托車和電動輕便摩托車用閥控式鉛酸蓄電池
- GB/T 337.1-2002工業(yè)硝酸濃硝酸
- 《解放戰(zhàn)爭》(共48張PPT)
評論
0/150
提交評論