第 04 章C#面向?qū)ο缶幊踢M(jìn)階課件_第1頁
第 04 章C#面向?qū)ο缶幊踢M(jìn)階課件_第2頁
第 04 章C#面向?qū)ο缶幊踢M(jìn)階課件_第3頁
第 04 章C#面向?qū)ο缶幊踢M(jìn)階課件_第4頁
第 04 章C#面向?qū)ο缶幊踢M(jìn)階課件_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、C#C#教程教程4.1 4.1 委托和事件委托和事件4.2 4.2 接口接口4.3 4.3 集合類集合類4.4 String4.4 String類與類與StringBuilderStringBuilder類類4.5 4.5 命名空間和局部類命名空間和局部類4.6 4.6 泛型泛型4.7 4.7 綜合應(yīng)用綜合應(yīng)用C#C#教程教程4.1.1 4.1.1 委托委托定義委托使用關(guān)鍵字delegate:delegate int SomeDelegate(int nID, string sName);再實例化:SomeDelegate d1 = new SomeDelegate(wr.InstanceMe

2、thod);其中wr是對象,有InstanceMethod實例方法。最后調(diào)用:d1(5, aaa);通過委托SomeDelegate實現(xiàn)對方法InstanceMethod的調(diào)用,調(diào)用還必須有一個前提條件:方法InstanceMethod有參數(shù)且和定義SomeDelegate的參數(shù)一致,并且返回值為int。方法InstanceMethod的定義: public int InstanceMethod(int nID, string sName)C#C#教程教程例例EX4_1EX4_1】設(shè)計一個管理企業(yè)員工上下班的設(shè)計一個管理企業(yè)員工上下班的WinFormWinForm程序。員工單擊程序。員工單擊“

3、上班上班”按鈕表示簽到上班,單擊按鈕表示簽到上班,單擊“下班下班”按鈕表示下班按鈕表示下班。定義一個管理上下班類“StartOffWork”,其中“StartWork”和“OffWork”方法分別管理上班和下班。設(shè)計步驟如下:(1)新建WinForm項目并添加控件新建WinForm項目并命名為“EX4_1”,從工具箱中拖曳2個“Label”和2“Button”控件到窗體上。(2)設(shè)置控件與窗體屬性將Form1、button1和button2的“Text”屬性分別設(shè)置為“委托”、“上班”和“下班”,label1和label2的“Text”屬性都設(shè)置為空值。C#C#教程教程(3)添加代碼在窗體設(shè)計

4、器中分別雙擊button1和button2按鈕,在代碼編輯窗口中添加代碼,代碼如下所示。(4)運行程序按“Ctrl+F5”組合鍵運行程序,單擊“上班”按鈕,結(jié)果如圖4.1所示。如果單擊“下班”按鈕,則彈出對話框,如圖4.2所示。 圖4.1 單擊“上班”按鈕的結(jié)果 圖4.2 消息框C#C#教程教程說明:說明:(1)類“MessageBox”是顯示可包含文本、按鈕和符號(通知并指示用戶)的消息框的。其中顯示消息框的“Show”方法有很多重載方法。例如,代碼“MessageBox.Show(確實要關(guān)閉系統(tǒng)嗎,系統(tǒng)提示,MessageBoxButtons.YesNo);”將彈出如圖4.3所示的消息框。

5、在后面章節(jié)將詳細(xì)介紹消息框。 圖4.3 消息框C#C#教程教程(2)匿名方法。創(chuàng)建匿名方法為:首先創(chuàng)建一個委托:delegate void Dele(string s);然后實例化委托,指定該委托要執(zhí)行的代碼塊:Dele d=delegate(string str)/*ToDo*/;如在示例代碼中,將“下班”按鈕事件代碼改為匿名方法為:private void button2_Click(object sender, EventArgs e)/單擊“下班”按鈕執(zhí)行的動作 OffWorkDelegate OWork = delegate(string offworktime) if (DateT

6、ime.Now Convert.ToDateTime(offworktime) /是否到了下班時間 MessageBox.Show(辛苦了!); /彈出消息框 else MessageBox.Show(還沒到下班時間!); ; OWork(17:30); (3)DateTime用于表示日期和時間,同時也包含許多檢索、操作和格式化日期和時間值的函數(shù)。C#C#教程教程C#事件是按“發(fā)布-預(yù)訂”方式工作的。先在一個類中發(fā)布事件,然后在任意數(shù)量的類中對事件進(jìn)行預(yù)訂。事件的工作過程如圖4.4所示。圖4.4 事件的工作過程C#C#教程教程C#事件機制是基于委托實現(xiàn)的,因此首先要定義一個委托EventHan

7、dler: public delegate void EventHandler(object sender , myEventArgs e)其中: myEventArgs類:派生于EventArgs類(包含事件數(shù)據(jù)的類的基類),實現(xiàn)自定義事件數(shù)據(jù)的功能。 sender:表示發(fā)生事件的對象。定義事件格式為:event 事件的委托名 事件名如事件TextOut定義:public event EventHandler TextOut;事件的激活一般寫成:if (TextOut != null) TextOut(this,new EventArgs();C#C#教程教程檢查TextOut事件有沒有被訂

8、閱,如果不為null,則表示有用戶訂閱。訂閱事件的是事件確發(fā)類,首先實例化EventSource,然后再訂閱事件:evsrc.TextOut += new EventSource.EventHandler(CatchEvent);/evsrc是事件確發(fā)類對象也可以取消訂閱:evsrc.TextOut = new EventSource.EventHandler(CatchEvent);C#C#教程教程【例例EX4_2EX4_2】利用事件設(shè)計一個簡單的顏色代碼,查詢利用事件設(shè)計一個簡單的顏色代碼,查詢WinFormWinForm應(yīng)用應(yīng)用程序。程序。設(shè)計思路如下:在這里定義3個類,事件確發(fā)類“Co

9、lorEvent”引發(fā)事件,事件處理類“Color Recognize”顯示顏色代碼消息,派生于EventArgs類的“ColorEventArgs”類提供事件數(shù)據(jù)。設(shè)計步驟如下:(1)新建WinForm項目并添加控件新建WinForm項目并命名為“EX4_2”,從工具箱中拖曳1個“TextBox”和1個“Button”控件到窗體中。 (2)設(shè)置控件與窗體屬性將button1和Form1的“Text”屬性設(shè)置為“查詢”和“事件”。(3)添加代碼在窗體設(shè)計器中雙擊button1,添加代碼。代碼如下所示。C#C#教程教程(4)運行程序按“Ctrl+F5”組合鍵運行程序,輸入一種顏色,單擊“查詢”按

10、鈕,結(jié)果如圖4.5所示。 圖4.5 查詢顏色的代碼C#C#教程教程接口是用來定義一種程序的協(xié)定。接口好比一種模板,這種模板定義了實現(xiàn)接口的對象必須實現(xiàn)的方法,其目的就是讓這些方法可以作為接口實例被引用。接口的定義如下:public interface IPartAvoid SetDataA(string dataA);與類的繼承類似,接口的繼承也形成接口之間的層次結(jié)構(gòu)。例如:using System;interface IControlvoid Paint();interface ITextBox : IControlvoid SetText(string text);interface Il

11、istBox : IControlvoid SetItems(string items);interface IComboBox : ITextBox, IlistBox C#C#教程教程【例例EX4_3EX4_3】設(shè)計一個簡單的計算器。其中定義一個類設(shè)計一個簡單的計算器。其中定義一個類“CalculateCalculate”和一個接口和一個接口“ICalculateAICalculateA”,用于計算的類,用于計算的類“CalculateCalculate”繼承接口繼承接口“ICalculateAICalculateA”。設(shè)計步驟如下:(1)新建WinForm項目并添加控件新建WinForm

12、項目并命名為“EX4_3”,在Form1中添加3個“TextBox”、1個“Button”和1個“Label”控件。(2)設(shè)置屬性將button1和Form1的“Text”屬性分別設(shè)置為“=”和“接口”。(3)添加代碼在窗體設(shè)計器中雙擊“=”按鈕,添加代碼,代碼如下所示。C#C#教程教程(4)運行程序按“Ctrl+F5”組合鍵運行程序,輸入數(shù)據(jù)和運算符,單擊“=”按鈕,結(jié)果如圖4.6所示。圖4.6 例EX4_3運行的結(jié)果C#C#教程教程4.3.1 Array4.3.1 Array類類1 1Array.Sort()Array.Sort()方法與方法與Array.Reverse()Array.Re

13、verse()方法方法Array.Sort()方法可以實現(xiàn)對一維數(shù)組的排序。常用的幾種形式及說明如表4.1所示。形 式說 明Array.Sort (Array)使用 Array 數(shù)組中每個元素的 Icomparable接口實現(xiàn),對整個一維 Array數(shù)組元素排序Array.Sort(Array,Array)基于第一個Array數(shù)組中的關(guān)鍵字,使用每個關(guān)鍵字的 Icomparable接口實現(xiàn),對兩個一維 Array數(shù)組對象排序Array.Sort(Array, IComparer)使用指定的 Icomparer接口,對一維Array數(shù)組元素排序Array.Sort(Array,Array,ICo

14、mparer)基于第一個Array數(shù)組中的關(guān)鍵字,使用指定的 Icomparer接口,對兩個一維 Array數(shù)組對象排序表4.1 Array.Sort()方法常用的幾種形式及說明Array.Reverse()方法可以用來對整個數(shù)組的順序進(jìn)行反轉(zhuǎn),其形式如下: public static void Reverse(Arrary); C#C#教程教程2 2Array.BinarySearch()Array.BinarySearch()方法方法Array.BinarySearch()方法實現(xiàn)在已經(jīng)排序的一維數(shù)組中查找元素,常用的幾種形式及說明如表4.2所示。形 式說 明Array.BinarySea

15、rch(Array, Object)使用由Array數(shù)組中每個元素和指定的對象實現(xiàn)的IComparable接口,在整個一維排序Array數(shù)組中搜索特定元素Array.BinarySearch(Array,Object, IComparer)使用指定的IComparer接口,在整個一維排序Array數(shù)組中搜索值表4.2 Array. BinarySearch()方法常用的幾種形式及說明C#C#教程教程【例例EX4_4EX4_4】設(shè)計一個對所輸入的數(shù)組進(jìn)行排序與查找的設(shè)計一個對所輸入的數(shù)組進(jìn)行排序與查找的WinFormWinForm應(yīng)應(yīng)用程序。用程序。設(shè)計思路如下:定義一個類“CSort”,在此類

16、中定義數(shù)組的排序和查找方法,其中在各個方法中調(diào)用對應(yīng)的Array的方法完成數(shù)組的排序與查找功能。設(shè)計步驟如下:(1)新建WinForm項目并添加控件新建WinForm項目并命名為“EX4_4”,在Form1中添加4個“TextBox”、2個“Button”和4個“Label”控件。(2)設(shè)置屬性將Form1、label1、label2、label3、label4、button1和button2的“Text”屬性分別設(shè)置為“數(shù)組的排序與查找”、“輸入數(shù)組:”、“正向排序:”、“反轉(zhuǎn)數(shù)組:”、“查找位置:”、“確定”和“清空”。C#C#教程教程(3)添加事件代碼在窗體編輯器中分別雙擊button1

17、和button2,系統(tǒng)自動切換到代碼編輯窗口,添加代碼,代碼如下所示。(4)運行程序按“Ctrl+F5”組合鍵運行程序,輸入數(shù)據(jù),如圖4.7所示,單擊“確定”按鈕,結(jié)果如圖4.8所示。 圖4.7 輸入數(shù)據(jù) 圖4.8 排序和查找的結(jié)果C#C#教程教程堆棧是一種后進(jìn)先出(LIFO)的數(shù)據(jù)結(jié)構(gòu)。就像在貨物管理中,有一些實時性非常強的貨物,需要后入倉先出倉,如圖4.9所示。圖4.9 后進(jìn)先出C#C#教程教程Stack堆棧類表示對象的“后進(jìn)先出”集合。為了創(chuàng)建Stack類的實例,需要調(diào)用Stack類提供的構(gòu)造函數(shù)。Stack類的構(gòu)造函數(shù)提供了三種重載形式,所以有三種實例化方法,如下所示:Stack sa

18、ck1 = new Stack();/使用默認(rèn)容量實例化Stack sack2 = new Stack(new string5 堆棧元素1, 堆棧元素2, 堆棧元素3, 堆棧元素4, 堆棧元素5 );/由string數(shù)組中的集合元素初始化堆棧對象Stack sack3 = new Stack(20); /創(chuàng)建堆棧對象并指定20個元素C#C#教程教程Stack類的常用方法及說明如表4.3所示。Stack類將它的對象存儲在數(shù)組中。只要數(shù)組足夠大到可以存儲新的對象,調(diào)用Push方法就是非常有效的。方 法說 明Clear從 Stack中移除所有對象Pop移除并返回位于Stack 頂部的對象Push將對

19、象插入Stack 的頂部Peek返回位于Stack 頂部的對象但不將其移除表4.3 Stack類的常用方法及說明C#C#教程教程【例例EX4_5EX4_5】利用利用StackStack設(shè)計一個備忘錄。設(shè)計一個備忘錄。設(shè)計步驟如下:(1)新建WinForm項目并添加控件新建WinForm項目并命名為“EX4_5”,在Form1中添加2個“TextBox”、2個“GroupBox”、1個“Label”和3個“Button”控件。(2)設(shè)置屬性將button1、button2、button3、groupBox1、groupBox2、Form1和label1的“Text”屬性分別設(shè)置為“”、“”、“”

20、、“填寫備忘錄”、“所有備忘錄”、“備忘錄”和“共有0條備忘錄”。將textBox1與textBox2的Multiline和ScrollBars屬性值設(shè)置為“True”和“Both”。其中3個Button控件用于添加、修改和刪除備忘錄。(3)添加事件代碼在窗體設(shè)計器中分別雙擊3個Button控件和窗體。因為類“Stack”在“System.Collections”命名空間中,所以添加命名空間“using System.Collections;”,添加代碼,代碼如下所示。C#C#教程教程(4)運行程序按“Ctrl+F5”組合鍵運行程序,填寫重要事件的日期和重要的事件,單擊“ ”按鈕添加備忘錄。如

21、果要修改,可單擊“ ”按鈕修改。單擊“ ”按鈕可刪除剛添加的備忘錄,如圖4.10所示。圖4.10 例EX4_5運行的結(jié)果C#C#教程教程SortedList類表示鍵/值對的集合,這些鍵/值對按鍵排序并可按照鍵和索引訪問。SortedList的元素是鍵/值對,這點和Hashtable相似,而其提供的索引的方法又和ArrayList相似。因此使用SortedList帶來兩者的優(yōu)點,但隨之也帶來了效率的下降。SortedList類的常用方法及說明如表4.4所示。方 法說 明Add 將帶有指定鍵和值的元素添加到 SortedList中Clear 從 SortedList 中移除所有元素Contains

22、 確定 SortedList 是否包含特定鍵ContainsKey 確定 SortedList 是否包含特定鍵ContainsValue 確定 SortedList 是否包含特定值CopyTo 將 SortedList 元素復(fù)制到一維 Array 實例中的指定索引位置Equals 已重載。 確定兩個 Object 實例是否相等(從 Object 繼承)GetByIndex 獲取 SortedList 的指定索引處的值GetHashCode 用做特定類型的哈希函數(shù)。GetHashCode 適合在哈希算法和數(shù)據(jù)結(jié)構(gòu)(如哈希表)中使用 (從 Object 繼承)GetKey 獲取 SortedLis

23、t 的指定索引處的鍵GetKeyList 獲取 SortedList 中的鍵GetValueList 獲取 SortedList 中的值IndexOfKey 返回 SortedList 中指定鍵的從零開始的索引IndexOfValue 返回指定的值在 SortedList 中第一個匹配項的從零開始的索引Remove 從 SortedList 中移除帶有指定鍵的元素RemoveAt 移除 SortedList 中指定索引處的元素SetByIndex 替換 SortedList 中指定索引處的值表表4.4 SortedList4.4 SortedList類的常用方法及說明類的常用方法及說明C#C#

24、教程教程常用屬性及說明如表4.5所示。屬 性說 明Capacity獲取或設(shè)置 SortedList 的容量Count獲取 SortedList 中包含的元素數(shù)Item獲取并設(shè)置與 SortedList 中的特定鍵相關(guān)聯(lián)的值Keys獲取 SortedList 中的鍵Values獲取 SortedList 中的值表4.5 SortedList類的常用屬性及說明C#C#教程教程【例例EX4_6EX4_6】利用利用SortedListSortedList設(shè)計一個備忘錄。設(shè)計一個備忘錄。設(shè)計步驟如下:(1)新建WinForm項目并添加控件新建WinForm項目并命名為“EX4_6”,在Form1中添加2

25、個“TextBox”、2個“GroupBox”和2個“Button”控件。(2)設(shè)置屬性將button1、button2、groupBox1、groupBox2和Form1的“Text”屬性分別設(shè)置為“添加”、“清空”、“填寫備忘錄”、“所有備忘錄”和“備忘錄”。將textBox2的Multiline和ScrollBars屬性值設(shè)置為“True”和“Both”。(3)添加事件代碼在窗體設(shè)計器中分別雙擊2個Button控件和窗體。因為類“SortedList”在“System.Collections”命名空間中,所以添加命名空間“using System.Collections;”,添加代碼,代

26、碼如下所示。C#C#教程教程(4)運行程序按“Ctrl+F5”組合鍵運行程序,填寫重要事件的日期和重要的事件,單擊“添加”按鈕添加備忘錄。單擊“清空”按鈕刪除剛添加的備忘錄,結(jié)果如圖4.11所示。圖4.11 例EX4_6運行的結(jié)果C#C#教程教程String對象不可變(只讀),因為一旦創(chuàng)建了該對象,就不能修改它的值。有些方法或運算符(如串聯(lián)運算符)看似是修改String對象,但實際上是創(chuàng)建一個新的包含該修改的 String對象。例如:string s1 = Hello;string s2 = World;s1 += s2;/創(chuàng)建了一個新的字符串實例s1C#C#教程教程StringBuilder

27、會保留自己的字符串緩沖區(qū),在針對StringBuilder執(zhí)行字符串操作時,會先檢查緩沖區(qū)的大小是否能容納新的字符串,不夠時再去增加需要的內(nèi)存數(shù)量,因此大幅降低了內(nèi)存配置的操作次數(shù),提高了效能。當(dāng)然大多數(shù)情況下,多估算一些緩沖區(qū)空間比后來又不斷加大要好。StringBuilder類的常用構(gòu)造函數(shù)、方法和屬性及說明如表4.6所示。構(gòu)造函數(shù)/方法/屬性說 明構(gòu)造函數(shù)StringBuilder()初始化StringBuilder類的新實例構(gòu)造函數(shù)StringBuilder(Int32)使用指定的容量初始化StringBuilder類的新實例構(gòu)造函數(shù)StringBuilder(String)使用指定的

28、字符串初始化StringBuilder類的新實例方法Append在此實例的結(jié)尾追加指定對象的字符串表示形式方法AppendLine將默認(rèn)的行終止符追加到此實例的末尾方法Insert將指定對象的字符串表示形式插到此實例中的指定字符位置方法Remove將指定范圍的字符從此實例中移除方法Replace將此實例中所有的指定字符或字符串替換為其他的指定字符或字符串屬性Capacity獲取或設(shè)置可包含在當(dāng)前實例所分配的內(nèi)存中的最大字符數(shù)屬性Chars獲取或設(shè)置此實例中指定字符位置處的字符屬性Length獲取或設(shè)置當(dāng)前StringBuilder對象的長度表表4.6 StringBuilder4.6 Stri

29、ngBuilder類的常用構(gòu)造函數(shù)、類的常用構(gòu)造函數(shù)、方法和屬性及說明方法和屬性及說明C#C#教程教程【例例EX4_7EX4_7】設(shè)計一個簡單的加密解密設(shè)計一個簡單的加密解密WinFormWinForm程序。程序。設(shè)計步驟如下:(1)新建WinForm項目并添加控件新建WinForm項目并命名為“EX4_7”,在Form1中添加2個“TextBox”、2個“Label”和2個“Button”控件。(2)設(shè)置屬性將label1、label2、button1、button2和Form1的“Text”屬性分別設(shè)置為“加密前字符串:”、“加密后字符串:”、“加密”、“清空”和“加密解密”。(3)添加事

30、件代碼在窗體設(shè)計器中分別雙擊“加密”和“清空”按鈕。添加代碼,代碼如下所示。C#C#教程教程(4)運行程序按“Ctrl+F5”組合鍵運行程序,輸入要加密的字符,單擊“加密”按鈕,結(jié)果如圖4.12所示。圖4.12 加密字符串C#C#教程教程4.5.1 4.5.1 命名空間命名空間.NET Framework使用命名空間來組織眾多的類,它是類的邏輯分類。當(dāng)需要使用某個類時,可以使用帶有命名空間的完全限定名,例如:System.Console.WriteLine(中國);其中,System是一個命名空間,Console是該命名空間中包含的類,WriteLine是該類的一個方法。如果使用using關(guān)鍵

31、字引入了命名空間,則不必使用完全限定名,例如:using System;Console.WriteLine(中國);C#C#教程教程【例例EX4_8EX4_8】修改修改【例例EX4_7EX4_7】,將其中的類,將其中的類“EncryptEncrypt”放在另一放在另一個命名為個命名為“NSEncryptNSEncrypt”的命名空間中。的命名空間中。設(shè)計步驟如下:(1)添加代碼文件打開“解決方案資源管理器”,右擊“EX4_7”“添加”“新建項”,在彈出的“添加新項”對話框中選擇“代碼文件”模板,使用默認(rèn)名稱“CodeFile1.cs”,單擊“添加”按鈕。(2)新建命名空間及添加代碼在“Code

32、File1.cs”中引用命名空間“using System.Text;”,新建命名空間“NSEncrypt”,將“Form1.cs”中的類“Encrypt”剪切并粘貼到此命名空間中,代碼如下所示。(3)“添加Form1.cs”中的代碼添加命名空間“using NSEncrypt;”,代碼如下。(4)運行程序按“Ctrl+F5”組合鍵運行程序,結(jié)果與【例EX4_7】相同。C#C#教程教程【例例EX4_9EX4_9】新建一個新建一個WinFormWinForm程序,查看程序,查看VS2008VS2008所添加的局部類。所添加的局部類。設(shè)計步驟如下:(1)新建WinForm項目新建WinForm項目

33、并命名為“EX4_9”。(2)查看代碼在“解決方案資源管理器”中打開“Form1.Designer.cs”文件,代碼如下。打開“Form1.cs”文件,代碼如下:namespace EX4_9 public partial class Form1 : Form public Form1() InitializeComponent(); C#C#教程教程通常一個方法或過程的簽名都有明確的數(shù)據(jù)類型:public void ProcessData(int i)public void ProcessData(string i)public void ProcessData(double i)這些方法的

34、簽名中的int、string和double 都是明確的數(shù)據(jù)類型。在訪問這些方法的過程中需要提供確定類型的參數(shù):ProcessData(123);ProcessData(abc);ProcessData(12.34);C#C#教程教程而如果將int、string和double這些類型也當(dāng)成一種參數(shù)傳給方法時,方法的定義便是這樣:public void ProcessData(T t)/T是int、string和double這些數(shù)據(jù)類型的指代用戶在調(diào)用的時候便成了這樣:ProcessData(123); ProcessData(abc);ProcessData(12.34);C#C#教程教程【例例EX4_10EX4_1

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論