注冊 | 登錄讀書好,好讀書,讀好書!
讀書網-DuShu.com
當前位置: 首頁出版圖書科學技術工業(yè)技術建筑科學建筑設計C#圖解教程(第5版)

C#圖解教程(第5版)

C#圖解教程(第5版)

定 價:¥129.00

作 者: (美)丹尼爾·索利斯(Daniel Solis),卡爾·施羅坦博爾(Cal Schrotenboer)
出版社: 人民郵電出版社
叢編項:
標 簽: 暫缺

購買這本書可以去


ISBN: 9787115519184 出版時間: 2019-11-01 包裝:
開本: 頁數: 字數:  

內容簡介

  本書是廣受贊譽的《C# 圖解教程》的*新版本。作者在本書中創(chuàng)造了一種全新的可視化敘述方式,以圖文并茂的形式、樸實簡潔的文字,并輔以大量表格和代碼示例,全面、直觀地闡述了C# 語言的各種特性。新版本除了精心修訂舊版內容外,還全面涵蓋了C# 6.0 和C# 7.0 的新增特性,比如局部函數、throw 表達式、name of 和空條件運算符、using static 指令、異常過濾器,等等。通過本書,讀者能夠快速、深入地理解C#,為自己的編程生涯打下良好的基礎。

作者簡介

  丹尼爾·索利斯(Daniel Solis) 擁有20余年軟件開發(fā)經驗,微軟、IBM等公司技術顧問。他不僅是深受讀者愛戴和推崇的技術圖書作家,而且也是享譽世界的技術培訓專家,在美國和歐洲各地傳授編程語言、Windows程序設計和Unix底層技術的經驗和心得。 卡爾·施羅坦博爾(Cal Schrotenboer) 擁有20余年軟件開發(fā)經驗,精通C#,一直從事企業(yè)級軟件開發(fā)。近十年來他還在加州的一些社區(qū)大學教授.NET相關課程。

圖書目錄

第1章 C#和.NET 框架    1 

1.1 在.NET 之前 1 

1.1.1 20 世紀90 年代末的Windows編程 1 

1.1.2 下一代平臺服務的目標 2 

1.2?。甆ET 時代 2 

1.2.1?。甆ET 框架的組成 2 

1.2.2 大大改進的編程環(huán)境 3 

1.3 編譯成CIL 5 

1.4 編譯成本機代碼并執(zhí)行 6 

1.5 CLR 7 

1.6 CLI 8 

1.7 各種縮寫 9 

1.8 C#的演化 9 

1.9 C#和Windows 的演化 10 

第2章 C#和.NET Core 11 

2.1?。甆ET 框架的背景 11 

2.2 為什么選擇.NET Core(和Xamarin) 11 

2.3?。甆ET Core 的目標 12 

2.4 多平臺支持 13 

2.5 快速發(fā)展和升級 13 

2.6 程序占用空間小、部署簡單、版本問題少 13 

2.7 開源社區(qū)支持 14 

2.8 改進的應用程序性能 14 

2.9 全新的開始 14 

2.10?。甆ET Core 的發(fā)展 15 

2.11?。甆ET 框架的未來 15 

2.12 Xamarin 的適用之處 15 

第3章 C#編程概述 16 

3.1 一個簡單的C#程序 16 

3.2 標識符 18 

3.3 關鍵字 18 

3.4 Main:程序的起始點 19 

3.5 空白 19 

3.6 語句 20 

3.7 從程序中輸出文本 21 

3.7.1 Write 21 

3.7.2 WriteLine 21 

3.7.3 格式字符串 22 

3.7.4 多重標記和值 23 

3.7.5 格式化數字字符串 24 

3.8 注釋:為代碼添加注解 28 

3.8.1 關于注釋的更多內容 28 

3.8.2 文檔注釋 29 

3.8.3 注釋類型總結 29 

第4章 類型、存儲和變量 30 

4.1 C#程序是一組類型聲明 30 

4.2 類型是一種模板 31 

4.3 實例化類型 31 

4.4 數據成員和函數成員 32 

4.5 預定義類型 33 

4.6 用戶定義類型 34 

4.7 棧和堆 35 

4.7.1 ?!?5 

4.7.2 堆 36 

4.8 值類型和引用類型 37 

4.8.1 存儲引用類型對象的成員 38 

4.8.2 C#類型的分類 38 

4.9 變量 39 

4.9.1 變量聲明 39 

4.9.2 多變量聲明 41 

4.9.3 使用變量的值 41 

4.10 靜態(tài)類型和dynamic 關鍵字 41 

4.11 可空類型 42 

第5章 類的基本概念 43 

5.1 類的概述 43 

5.2 程序和類:一個簡單的示例 44 

5.3 聲明類 45 

5.4 類成員 45 

5.4.1 字段 45 

5.4.2 方法 47 

5.5 創(chuàng)建變量和類的實例 48 

5.6 為數據分配內存 48 

5.7 實例成員 49 

5.8 訪問修飾符 50 

5.9 從類的內部訪問成員 52 

5.10 從類的外部訪問成員 53 

5.11 綜合應用 54 

第6章 方法 56 

6.1 方法的結構 56 

6.2 方法體內部的代碼執(zhí)行 57 

6.3 局部變量 58 

6.3.1 類型推斷和var 關鍵字 59 

6.3.2 嵌套塊中的局部變量 59 

6.4 局部常量 60 

6.5 控制流 61 

6.6 方法調用 62 

6.7 返回值 63 

6.8 返回語句和void 方法 64 

6.9 局部函數 66 

6.10 參數 66 

6.10.1 形參 67 

6.10.2 實參 67 

6.11 值參數 69 

6.12 引用參數 71 

6.13 引用類型作為值參數和引用參數 73 

6.14 輸出參數 76 

6.15 參數數組 79 

6.15.1 方法調用 80 

6.15.2 將數組作為實參 82 

6.16 參數類型總結 83 

6.17 ref 局部變量和ref 返回 83 

6.18 方法重載 86 

6.19 命名參數 87 

6.20 可選參數 88 

6.21 棧幀 91 

6.22 遞歸 93 

第7章 深入理解類 95 

7.1 類成員 95 

7.2 成員修飾符的順序 96 

7.3 實例類成員 97 

7.4 靜態(tài)字段 98 

7.5 從類的外部訪問靜態(tài)成員 98 

7.5.1 靜態(tài)字段示例 99 

7.5.2 靜態(tài)成員的生存期 100 

7.6 靜態(tài)函數成員 101 

7.7 其他靜態(tài)類成員類型 102 

7.8 成員常量 102 

7.9 常量與靜態(tài)量 103 

7.10 屬性 103 

7.10.1 屬性聲明和訪問器 104 

7.10.2 屬性示例 105 

7.10.3 使用屬性 106 

7.10.4 屬性和關聯字段 106 

7.10.5 執(zhí)行其他計算 107 

7.10.6 只讀和只寫屬性 108 

7.10.7 屬性與公有字段 109 

7.10.8 計算只讀屬性示例 109 

7.10.9 自動實現屬性 110 

7.10.10 靜態(tài)屬性 111 

7.11 實例構造函數 112 

7.11.1 帶參數的構造函數 113 

7.11.2 默認構造函數 114 

7.12 靜態(tài)構造函數 114 

7.13 對象初始化語句 116 

7.14 析構函數 117 

7.15 readonly 修飾符 117 

7.16 this 關鍵字 118 

7.17 索引器 119 

7.17.1 什么是索引器 120 

7.17.2 索引器和屬性 120 

7.17.3 聲明索引器 121 

7.17.4 索引器的set 訪問器 122 

7.17.5 索引器的get 訪問器 122 

7.17.6 關于索引器的更多內容 123 

7.17.7 為Employee 示例聲明索引器 123 

7.17.8 另一個索引器示例 124 

7.17.9 索引器重載 125 

7.18 訪問器的訪問修飾符 126 

7.19 分部類和分部類型 127 

7.20 分部方法 128 

第8章 類和繼承 130 

8.1 類繼承 130 

8.2 訪問繼承的成員 131 

8.3 所有類都派生自object 類 132 

8.4 屏蔽基類的成員 133 

8.5 基類訪問 135 

8.6 使用基類的引用 135 

8.6.1 虛方法和覆寫方法 137 

8.6.2 覆寫標記為override 的方法 139 

8.6.3 覆蓋其他成員類型 142 

8.7 構造函數的執(zhí)行 142 

8.7.1 構造函數初始化語句 144 

8.7.2 類訪問修飾符 145 

8.8 程序集間的繼承 146 

8.9 成員訪問修飾符 148 

8.9.1 訪問成員的區(qū)域 149 

8.9.2 公有成員的可訪問性 150 

8.9.3 私有成員的可訪問性 150 

8.9.4 受保護成員的可訪問性 150 

8.9.5 內部成員的可訪問性 151 

8.9.6 受保護內部成員的可訪問性 151 

8.9.7 成員訪問修飾符小結 152 

8.10 抽象成員 153 

8.11 抽象類 154 

8.11.1 抽象類和抽象方法的示例 154 

8.11.2 抽象類的另一個例子 155 

8.12 密封類 156 

8.13 靜態(tài)類 156 

8.14 擴展方法 157 

8.15 命名約定 160 

第9章 表達式和運算符 162 

9.1 表達式 162 

9.2 字面量 163 

9.2.1 整數字面量 164 

9.2.2 實數字面量 165 

9.2.3 字符字面量 166 

9.2.4 字符串字面量 167 

9.3 求值順序 168 

9.3.1 優(yōu)先級 168 

9.3.2 結合性 169 

9.4 簡單算術運算符 170 

9.5 求余運算符 170 

9.6 關系比較運算符和相等比較運算符 171 

9.7 遞增運算符和遞減運算符 173 

9.8 條件邏輯運算符 174 

9.9 邏輯運算符 175 

9.10 移位運算符 176 

9.11 賦值運算符 178 

9.12 條件運算符 179 

9.13 一元算術運算符 181 

9.14 用戶定義的類型轉換 181 

9.15 運算符重載 184 

9.15.1 運算符重載的示例 185 

9.15.2 運算符重載的限制 186 

9.16 typeof 運算符 189 

9.17 nameof 運算符 190 

9.18 其他運算符 191 

第10章 語句 192 

10.1 什么是語句 192 

10.2 表達式語句 193 

10.3 控制流語句 194 

10.4 if 語句 194 

10.5 if else 語句 195 

10.6 while 循環(huán) 196 

10.7 do 循環(huán) 197 

10.8 for 循環(huán) 198 

10.8.1 for 語句中變量的作用域 200 

10.8.2 初始化和迭代表達式中的多表達式 200 

10.9 switch 語句 201 

10.9.1 分支示例 203 

10.9.2 其他類型的模式表達式 203 

10.9.3 switch 語句的補充 205 

10.9.4 分支標簽 206 

10.10 跳轉語句 207 

10.11 break 語句 207 

10.12 continue 語句 208 

10.13 標簽語句 209 

10.13.1 標簽 209 

10.13.2 標簽語句的作用域 209 

10.14 goto 語句 210 

10.15 using 語句 211 

10.15.1 包裝資源的使用 212 

10.15.2 using 語句的示例 212 

10.15.3 多個資源和嵌套 213 

10.15.4 using 語句的另一種形式 214 

10.16 其他語句 215 

第11章 結構 216 

11.1 什么是結構 216 

11.2 結構是值類型 217 

11.3 對結構賦值 218 

11.4 構造函數和析構函數 219 

11.4.1 實例構造函數 219 

11.4.2 靜態(tài)構造函數 220 

11.4.3 構造函數和析構函數小結 221 

11.5 屬性和字段初始化語句 221 

11.6 結構是密封的 221 

11.7 裝箱和拆箱 222 

11.8 結構作為返回值和參數 222 

11.9 關于結構的更多內容 222 

第12章 枚舉 223 

12.1 枚舉 223 

12.1.1 設置底層類型和顯式值 225 

12.1.2 隱式成員編號 225 

12.2 位標志 226 

12.2.1 Flags 特性 229 

12.2.2 使用位標志的示例 230 

12.3 關于枚舉的更多內容 231 

第13章 數組 234 

13.1 數組 234 

13.1.1 定義 234 

13.1.2 重要細節(jié) 235 

13.2 數組的類型 235 

13.3 數組是對象 236 

13.4 一維數組和矩形數組 237 

13.5 實例化一維數組或矩形數組 238 

13.6 訪問數組元素 238 

13.7 初始化數組 239 

13.7.1 顯式初始化一維數組 240 

13.7.2 顯式初始化矩形數組 240 

13.7.3 初始化矩形數組的語法點 241 

13.7.4 快捷語法 241 

13.7.5 隱式類型數組 241 

13.7.6 綜合內容 242 

13.8 交錯數組 242 

13.8.1 聲明交錯數組 243 

13.8.2 快捷實例化 243 

13.8.3 實例化交錯數組 244 

13.8.4 交錯數組中的子數組 245 

13.9 比較矩形數組和交錯數組 246 

13.10 foreach 語句 247 

13.10.1 迭代變量是只讀的 248 

13.10.2 foreach 語句和多維數組 249 

13.11 數組協(xié)變 250 

13.12 數組繼承的有用成員 251 

13.13 比較數組類型 254 

13.14 數組與ref 返回和ref 局部變量 255 

第14章 委托 256 

14.1 什么是委托 256 

14.2 委托概述 258 

14.3 聲明委托類型 259 

14.4 創(chuàng)建委托對象 260 

14.5 給委托賦值 261 

14.6 組合委托 262 

14.7 為委托添加方法 262 

14.8 從委托移除方法 263 

14.9 調用委托 263 

14.10 委托的示例 264 

14.11 調用帶返回值的委托 265 

14.12 調用帶引用參數的委托 266 

14.13 匿名方法 267 

14.13.1 使用匿名方法 268 

14.13.2 匿名方法的語法 268 

14.13.3 變量和參數的作用域 270 

14.14 Lambda 表達式 271 

第15章 事件 274 

15.1 發(fā)布者和訂閱者 274 

15.2 源代碼組件概覽 276 

15.3 聲明事件 276 

15.4 訂閱事件 277 

15.5 觸發(fā)事件 278 

15.6 標準事件的用法 280 

15.6.1 通過擴展EventArgs 來傳遞數據 281 

15.6.2 移除事件處理程序 283 

15.7 事件訪問器 284 

第16章 接口 286 

16.1 什么是接口 286 

16.2 聲明接口 291 

16.3 實現接口 292 

16.4 接口是引用類型 294 

16.5 接口和as 運算符 295 

16.6 實現多個接口 295 

16.7 實現具有重復成員的接口 296 

16.8 多個接口的引用 298 

16.9 派生成員作為實現 299 

16.10 顯式接口成員實現 300 

16.11 接口可以繼承接口 302 

16.12 不同類實現一個接口的示例 303 

第17章 轉換 305 

17.1 什么是轉換 305 

17.2 隱式轉換 306 

17.3 顯式轉換和強制轉換 307 

17.4 轉換的類型 308 

17.5 數字的轉換 309 

17.5.1 隱式數字轉換 309 

17.5.2 溢出檢測上下文 310 

17.5.3 顯式數字轉換 311 

17.6 引用轉換 315 

17.6.1 隱式引用轉換 316 

17.6.2 顯式引用轉換 317 

17.6.3 有效顯式引用轉換 318 

17.7 裝箱轉換 318 

17.7.1 裝箱是創(chuàng)建副本 319 

17.7.2 裝箱轉換 320 

17.8 拆箱轉換 320 

17.9 用戶自定義轉換 321 

17.9.1 用戶自定義轉換的約束 322 

17.9.2 用戶自定義轉換的示例 322 

17.9.3 評估用戶自定義轉換 323 

17.9.4 多步用戶自定義轉換的示例 324 

17.10 is 運算符 325 

17.11 as 運算符 326 

第18章 泛型 327 

18.1 什么是泛型 327 

18.2 C#中的泛型 329 

18.3 泛型類 330 

18.3.1 聲明泛型類 331 

18.3.2 創(chuàng)建構造類型 331 

18.3.3 創(chuàng)建變量和實例 332 

18.3.4 使用泛型的棧的示例 333 

18.3.5 比較泛型和非泛型?!?34 

18.4 類型參數的約束 335 

18.4.1 Where 子句 336 

18.4.2 約束類型和次序 337 

18.5 泛型方法 337 

18.5.1 聲明泛型方法 338 

18.5.2 調用泛型方法 338 

18.5.3 泛型方法的示例 339 

18.6 擴展方法和泛型類 340 

18.7 泛型結構 341 

18.8 泛型委托 342 

18.9 泛型接口 344 

18.9.1 使用泛型接口的示例 345 

18.9.2 泛型接口的實現必須唯一 345 

18.10 協(xié)變和逆變 346 

18.10.1 協(xié)變 346 

18.10.2 逆變 349 

18.10.3 協(xié)變和逆變的不同 350 

18.10.4 接口的協(xié)變和逆變 351 

18.10.5 關于可變性的更多內容 352 

第19章 枚舉器和迭代器 354 

19.1 枚舉器和可枚舉類型 354 

19.2 IEnumerator 接口 356 

19.3 IEnumerable 接口 358 

19.4 泛型枚舉接口 360 

19.5 迭代器 362 

19.5.1 迭代器塊 362 

19.5.2 使用迭代器來創(chuàng)建枚舉器 363 

19.5.3 使用迭代器來創(chuàng)建可枚舉類型 365 

19.6 常見迭代器模式 366 

19.7 產生多個可枚舉類型 367 

19.8 將迭代器作為屬性 368 

19.9 迭代器的實質 369 

第20章 LINQ 371 

20.1 什么是LINQ 371 

20.2 LINQ 提供程序 372 

20.3 方法語法和查詢語法 374 

20.4 查詢變量 375 

20.5 查詢表達式的結構 376 

20.5.1 from 子句 377 

20.5.2 join 子句 378 

20.5.3 什么是聯結 379 

20.5.4 查詢主體中的from let where 片段 381 

20.5.5 orderby 子句 384 

20.5.6 select group 子句 385 

20.5.7 查詢中的匿名類型 386 

20.5.8 group 子句 387 

20.5.9 查詢延續(xù):into 子句 388 

20.6 標準查詢運算符 389 

20.6.1 標準查詢運算符的簽名 392 

20.6.2 查詢表達式和標準查詢運算符 393 

20.6.3 將委托作為參數 394 

20.6.4 LINQ 預定義的委托類型 395 

20.6.5 使用委托參數的示例 396 

20.6.6 使用Lambda 表達式參數的示例 397 

20.7 LINQ to XML 398 

20.7.1 標記語言 398 

20.7.2 XML 基礎 398 

20.7.3 XML 類 400 

20.7.4 使用XML 特性 406 

20.7.5 其他類型的節(jié)點 408 

20.7.6 使用LINQ to XML 的LINQ 查詢 409 

第21章 異步編程 412 

21.1 什么是異步 412 

21.2 async/await 特性的結構 416 

21.3 什么是異步方法 417 

21.3.1 異步方法的控制流 421 

21.3.2 取消一個異步操作 427 

21.3.3 在調用方法中同步地等待任務 430 

21.3.4 在異步方法中異步地等待任務 433 

21.3.5 Task.Delay 方法 435 

21.4 GUI 程序中的異步操作 436 

21.5 使用異步Lambda 表達式 440 

21.6 完整的GUI 程序 441 

21.7 BackgroundWorker 類 443 

21.8 并行循環(huán) 447 

21.9 其他異步編程模式 450 

21.10 BeginInvoke 和EndInvoke 451 

21.10.1 等待直到完成模式 452 

21.10.2 AsyncResult 類 453 

21.10.3 輪詢模式 454 

21.10.4 回調模式 455 

21.11 計時器 458 

第22章 命名空間和程序集 460 

22.1 引用其他程序集 460 

22.2 命名空間 464 

22.2.1 命名空間名稱 467 

22.2.2 命名空間的補充 467 

22.2.3 命名空間跨文件伸展 468 

22.2.4 嵌套命名空間 469 

22.3 using 指令 470 

22.3.1 using 命名空間指令 470 

22.3.2 using 別名指令 471 

22.3.3 using static 指令 471 

22.4 程序集的結構 472 

22.5 程序集標識符 473 

22.6 強命名程序集 474 

22.7 私有程序集的部署 475 

22.8 共享程序集和GAC 476 

22.8.1 把程序集安裝到GAC 476 

22.8.2 GAC 內的并肩執(zhí)行 477 

22.9 配置文件 477 

22.10 延遲簽名 478 

第23章 異?!?80 

23.1 什么是異常 480 

23.2 try 語句 481 

23.3 異常類 482 

23.4 catch 子句 483 

23.5 異常過濾器 485 

23.6 catch 子句段 485 

23.7 finally 塊 486 

23.8 為異常尋找處理程序 487 

23.9 進一步搜索 488 

23.9.1 一般法則 489 

23.9.2 搜索調用棧的示例 489 

23.10 拋出異?!?92 

23.11 不帶異常對象的拋出 493 

23.12 throw 表達式 494 

第24章 預處理指令 495 

24.1 什么是預處理指令 495 

24.2 基本規(guī)則 495 

24.3 #define 和#undef 指令 496 

24.4 條件編譯 497 

24.5 條件編譯結構 498 

24.6 診斷指令 500 

24.7 行號指令 501 

24.8 區(qū)域指令 502 

24.9 #pragma warning 指令 503 

第25章 反射和特性 504 

25.1 元數據和反射 504 

25.2 Type 類 505 

25.3 獲取Type 對象 506 

25.4 什么是特性 508 

25.5 應用特性 509 

25.6 預定義的保留特性 509 

25.6.1 Obsolete 特性 509 

25.6.2 Conditional 特性 510 

25.6.3 調用者信息特性 512 

25.6.4 DebuggerStepThrough 特性 513 

25.6.5 其他預定義特性 514 

25.7 關于應用特性的更多內容 514 

25.7.1 多個特性 514 

25.7.2 其他類型的目標 515 

25.7.3 全局特性 515 

25.8 自定義特性 516 

25.8.1 聲明自定義特性 516 

25.8.2 使用特性的構造函數 516 

25.8.3 指定構造函數 517 

25.8.4 使用構造函數 517 

25.8.5 構造函數中的位置參數和命名參數 518 

25.8.6 限制特性的使用 518 

25.8.7 自定義特性的最佳實踐 520 

25.9 訪問特性 520 

25.9.1 使用IsDefined 方法 520 

25.9.2 使用GetCustomAttributes方法 521 

第26章 C# 6.0 和C# 7.0 新增的內容 523 

26.1 新增內容概述 524 

26.2 字符串插值(C# 6.0) 524 

26.3 自動屬性初始化語句 525 

26.4 只讀自動屬性(C# 6.0) 526 

26.5 表達式函數體成員(C# 6.0 和 C# 7.0) 526 

26.6 using static(C# 6.0) 527 

26.7 空條件運算符(C# 6.0) 528 

26.8 在catch 和finally 塊中使用await(C# 6.0) 528 

26.9 nameof 運算符(C# 6.0) 529 

26.10 異常過濾器(C# 6.0) 529 

26.11 索引初始化語句(C# 6.0) 530 

26.12 集合初始化語句的擴展方法(C# 6.0) 532 

26.13 改進的重載決策(C# 6.0) 533 

26.14 值元組(C# 7.0) 534 

26.15 is 模式匹配(C# 7.0) 534 

26.16 switch 模式匹配(C# 7.0) 536 

26.17 自定義析構函數(C# 7.0) 538 

26.18 二進制字面量和數字分隔符(C# 7.0) 540 

26.19 out 變量(C# 7.0) 541 

26.20 局部函數(C# 7.0) 542 

26.21 ref 局部變量(ref 變量)和 ref 返回(C# 7.0) 544 

26.22 表達式函數體成員的擴展(C# 7.0) 544 

26.23 throw 表達式(C# 7.0) 545 

26.24 擴展的async 返回類型(C# 7.0) 545 

第27章 其他主題 546 

27.1 概述 546 

27.2 字符串 546 

27.3 StringBuilder 類 548 

27.4 把字符串解析為數據值 549 

27.5 關于可空類型的更多內容 550 

27.5.1 為可空類型賦值 552 

27.5.2 使用空接合運算符 552 

27.5.3 空條件運算符 553 

27.5.4 使用可空用戶定義類型 555 

27.6 Main 方法 556 

27.7 文檔注釋 558 

27.7.1 插入文檔注釋 558 

27.7.2 使用其他XML 標簽 559 

27.8 嵌套類型 559 

27.8.1 嵌套類的示例 560 

27.8.2 可見性和嵌套類型 561 

27.9 析構函數和dispose 模式 563 

27.9.1 標準dispose 模式 564 

27.9.2 比較構造函數和析構函數 566 

27.10 Tuple 和ValueTuple 566 

27.11 和COM 的互操作 568


本目錄推薦

掃描二維碼
Copyright ? 讀書網 www.leeflamesbasketballcamps.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網安備 42010302001612號