国产成人欧美一区二区三区vr_久久国产精品人人爽人人爽_国产精品永久免费播放_肉欲啪啪a∨无码精品一区二区_国产超短裙jk丝袜在线_亚洲AV片高清资源在线观看_国模无码一区二区三区久久_国产成年人未进视频_中文字幕无码精品夜_一区二区三区在线视频免费看_亚洲成AV人片在线观看网址_日本激情视频高清综合久久_亚洲午夜视频福利_国内大量揄拍人妻精品視_久久国产精品福利二区三区

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

C#基礎(chǔ)練習(xí)題工程化:從控制臺(tái)小題到自動(dòng)判題題庫(kù)

C#基礎(chǔ)練習(xí)題工程化:從控制臺(tái)小題到自動(dòng)判題題庫(kù) 簡(jiǎn)介一份面向C#初學(xué)者的軟件代碼練習(xí)包圍繞基本語(yǔ)法與數(shù)據(jù)類型、條件與循環(huán)、函數(shù)與方法、數(shù)組與集合、類與對(duì)象、接口與抽象類、異常處理、枚舉與委托、文件與流、LINQ、異步編程和泛型等核心知識(shí)點(diǎn)組織適合正在系統(tǒng)入門或準(zhǔn)備查漏補(bǔ)缺的學(xué)習(xí)者通過(guò)動(dòng)手編碼鞏固基礎(chǔ)。壓縮包共1670個(gè)文件約17.87MB內(nèi)含224個(gè)cs源碼、94個(gè)csproj工程文件、82個(gè)sln解決方案以及pdb、exe、resx、jpg、ico等編譯輸出和配套資源多數(shù)練習(xí)可按解決方案直接打開、編譯與調(diào)試。已有731人學(xué)習(xí)說(shuō)明其作為練習(xí)素材具有一定參考價(jià)值。讀者可借助分層練習(xí)逐項(xiàng)驗(yàn)證變量聲明、循環(huán)控制、值傳遞與引用傳遞、集合增刪改查、接口實(shí)現(xiàn)、異常捕獲、LINQ查詢及async/await異步方法等常見考點(diǎn)也能從完整工程結(jié)構(gòu)中熟悉C#項(xiàng)目的組織方式、資源引用和調(diào)試流程對(duì)于需要從語(yǔ)法練習(xí)過(guò)渡到小型項(xiàng)目實(shí)踐的讀者這份題庫(kù)提供了較密集的動(dòng)手樣本與排錯(cuò)線索。1. 從一份 C# 基礎(chǔ)練習(xí)題說(shuō)起它究竟練的是什么手感很多人學(xué) C# 卡住的地方不是看不懂語(yǔ)法而是打開編輯器之后不知道下一行該寫什么。手上這份 C# 基礎(chǔ)練習(xí)題就是針對(duì)這個(gè)尷尬來(lái)的它把變量與類型、分支循環(huán)、數(shù)組與字符串、類與接口、集合與 LINQ 拆成一批能直接運(yùn)行的控制臺(tái)小題每題一個(gè)入口改完就能看到輸出。它適合兩類人一是剛過(guò)完語(yǔ)法教程、急需手感的新手二是要帶新人、想找一套現(xiàn)成練手素材的老開發(fā)。整套東西不碰框架也不碰界面純控制臺(tái)加 .NET SDK跑起來(lái)的門檻很低。但也正因?yàn)楹?jiǎn)單不少人做完前五題就停了真正值錢的那部分——怎么把這些小題組織成一個(gè)能反復(fù)練、能自動(dòng)判對(duì)的工程——反而被跳過(guò)去了。2. 工程骨架把零散小題組織成一個(gè)能編譯的倉(cāng)庫(kù)練習(xí)題最容易寫成“一堆隨手丟的 Program.cs”。單題能跑一多就亂想回頭復(fù)習(xí)第三題得翻半天文件夾想確認(rèn)自己沒(méi)把前面的題改壞只能一個(gè)個(gè)手動(dòng)跑。所以第一步不是寫代碼是先把骨架搭對(duì)讓dotnet build一次編譯全部題目讓每道題的入口互不干擾。這一步花十分鐘后面能省掉大量返工。2.1 用 dotnet CLI 搭出題目倉(cāng)庫(kù)我一般不用 IDE 的圖形化新建項(xiàng)目直接用命令行因?yàn)槊羁蓮?fù)制、可寫進(jìn)腳本下次重建題庫(kù)時(shí)改兩行就行。核心思路是“一個(gè)解決方案 每題一個(gè)控制臺(tái)項(xiàng)目”這樣每道題都有自己的Main互不搶占入口點(diǎn)。# 建總目錄后面所有命令都在這個(gè)目錄里執(zhí)行 mkdir CSharpBasics cd CSharpBasics # 創(chuàng)建解決方案文件用來(lái)統(tǒng)一管理所有題目項(xiàng)目 dotnet new sln -n CSharpBasics # 第 1 題變量、類型與類型轉(zhuǎn)換 dotnet new console -n Ex01_Types -o src/Ex01_Types dotnet sln add src/Ex01_Types/Ex01_Types.csproj # 第 2 題分支與循環(huán) dotnet new console -n Ex02_Loops -o src/Ex02_Loops dotnet sln add src/Ex02_Loops/Ex02_Loops.csproj # 第 3 題數(shù)組與字符串 dotnet new console -n Ex03_ArrayString -o src/Ex03_ArrayString dotnet sln add src/Ex03_ArrayString/Ex03_ArrayString.csproj # 一次性編譯整個(gè)解決方案確認(rèn)骨架沒(méi)問(wèn)題 dotnet builddotnet new console生成的是最小可運(yùn)行模板只有項(xiàng)目名.csproj和Program.cs兩個(gè)文件。-n是指項(xiàng)目名會(huì)同時(shí)決定程序集名和默認(rèn)命名空間-o是輸出目錄我習(xí)慣統(tǒng)一放到src/下根目錄只留解決方案文件。dotnet sln add把項(xiàng)目掛進(jìn)解決方案之后dotnet build不帶參數(shù)就會(huì)編譯全部能立刻發(fā)現(xiàn)“改了第 2 題卻把第 3 題改崩了”這種連鎖問(wèn)題。單題運(yùn)行用dotnet run --project src/Ex02_Loops--project后面跟的是項(xiàng)目目錄而不是解決方案這點(diǎn)別搞混否則會(huì)報(bào)“找不到可運(yùn)行的項(xiàng)目”。2.2 用 Directory.Build.props 統(tǒng)一目標(biāo)框架如果每個(gè) csproj 各寫一套配置練到第十題你就會(huì)發(fā)現(xiàn)有的項(xiàng)目目標(biāo)框架是舊版、有的沒(méi)開可空引用行為不一致排查起來(lái)很不方便。.NET 的 MSBuild 支持在目錄層級(jí)放一個(gè)Directory.Build.props子目錄里的項(xiàng)目會(huì)自動(dòng)繼承這是我做練習(xí)倉(cāng)庫(kù)時(shí)必加的一層。Project PropertyGroup !-- 所有題目統(tǒng)一目標(biāo)框架避免每題語(yǔ)法能力不一致 -- TargetFrameworknet8.0/TargetFramework !-- 隱式 using省掉每題都寫 using System; -- ImplicitUsingsenable/ImplicitUsings !-- 開啟可空引用類型強(qiáng)制練習(xí)時(shí)正視 null -- Nullableenable/Nullable LangVersionlatest/LangVersion !-- 練習(xí)題不需要發(fā)布產(chǎn)物關(guān)掉能少一堆 bin/obj 噪音 -- GenerateDocumentationFilefalse/GenerateDocumentationFile /PropertyGroup /Project這幾個(gè)參數(shù)值得逐個(gè)說(shuō)清楚。TargetFramework決定能用哪些 API寫死成一個(gè)長(zhǎng)期支持版本能避免“網(wǎng)上抄的代碼在我這編譯不過(guò)”。ImplicitUsings打開后System、System.Collections.Generic、System.Linq這些常用命名空間自動(dòng)引入練習(xí)題代碼能短很多。Nullable是最有爭(zhēng)議的一個(gè)打開后寫string s Console.ReadLine();會(huì)直接給警告新手第一反應(yīng)是煩但這恰恰是 C# 里最該早點(diǎn)撞上的墻第 5 章會(huì)專門講怎么處理。提示如果本機(jī)只裝了某一個(gè)版本的 SDK把net8.0改成dotnet --list-sdks里實(shí)際存在的版本別硬抄。2.3 題目分類與目錄清單題目如果只是按“第 1 題、第 2 題”平鋪復(fù)習(xí)時(shí)完全沒(méi)有線索。我習(xí)慣按語(yǔ)法主線切成七個(gè)臺(tái)階每道題掛在一個(gè)臺(tái)階下目錄名直接體現(xiàn)考察點(diǎn)找題時(shí)看目錄就夠。臺(tái)階目錄示例主要考察點(diǎn)建議題量類型與轉(zhuǎn)換Ex01_Types值類型、引用類型、TryParse、格式化輸出46分支與循環(huán)Ex02_Loopsif/switch、for/while、嵌套循環(huán)58數(shù)組與字符串Ex03_ArrayString遍歷、排序、string常用方法58類與對(duì)象Ex04_Oop字段、屬性、構(gòu)造、封裝46繼承與接口Ex05_Interface抽象類、接口、多態(tài)35集合與泛型Ex06_CollectionListT、DictionaryK,V、泛型方法46LINQ 與異常Ex07_Linq查詢表達(dá)式、鏈?zhǔn)秸{(diào)用、try/catch46對(duì)應(yīng)的目錄結(jié)構(gòu)大致是這樣后面加題只要往src/里塞新項(xiàng)目再dotnet sln add就行CSharpBasics/ ├── CSharpBasics.sln ├── Directory.Build.props # 全局編譯配置所有題目繼承 └── src/ ├── Ex01_Types/ │ ├── Ex01_Types.csproj │ └── Program.cs ├── Ex02_Loops/ │ ├── Ex02_Loops.csproj │ └── Program.cs └── ...這套結(jié)構(gòu)的好處是“可增量”。今天只做類型轉(zhuǎn)換就只dotnet run --project src/Ex01_Types哪天想整體回歸一遍dotnet build全量編譯能通過(guò)的說(shuō)明語(yǔ)法層面沒(méi)退化。至于每道題內(nèi)部的代碼怎么寫就是下一章的事了。3. 核心題型拆解五類題目背后的 C# 語(yǔ)法主線練習(xí)題的價(jià)值不在于題目本身多難而在于每道題是不是真的逼你用上了某個(gè)語(yǔ)法點(diǎn)。這一章按難度遞進(jìn)拆四類典型題每類給一段能直接跑的代碼并說(shuō)明它到底在練什么、參數(shù)怎么改、改錯(cuò)會(huì)看到什么現(xiàn)象??吹臅r(shí)候建議對(duì)著自己的Program.cs一起改別只讀。3.1 輸入輸出與類型轉(zhuǎn)換最容易被跳過(guò)的一關(guān)第一類題通常是“輸入半徑算圓面積”這種看起來(lái)簡(jiǎn)單到?jīng)]必要寫但它是新手翻車最集中的地方。原因在于控制臺(tái)輸入的原始形態(tài)永遠(yuǎn)是字符串而Console.ReadLine()在開啟可空引用后返回的是string?直接double.Parse一旦遇到空輸入或者用戶手抖打了字母整個(gè)程序就崩了。// 計(jì)算圓面積演示輸入校驗(yàn) 數(shù)值格式化 Console.Write(請(qǐng)輸入半徑); string? raw Console.ReadLine(); // TryParse 返回 bool轉(zhuǎn)換成功才把結(jié)果寫進(jìn) out 參數(shù) // 這里同時(shí)校驗(yàn)了“能轉(zhuǎn)成 double”和“必須大于 0”兩個(gè)條件 if (!double.TryParse(raw, out double radius) || radius 0) { Console.WriteLine(輸入不合法請(qǐng)輸入一個(gè)大于 0 的數(shù)字。); return; } double area Math.PI * radius * radius; // F2 表示保留兩位小數(shù)會(huì)做四舍五入 Console.WriteLine($半徑 {radius:F2} 的圓面積是 {area:F2});double.TryParse的第一個(gè)參數(shù)是待轉(zhuǎn)換字符串第二個(gè)是out參數(shù)轉(zhuǎn)換失敗時(shí)它會(huì)被賦成0所以判斷必須用返回值而不是看radius是不是 0——這是很多人第一次踩的坑。Math.PI是常量不用自己寫 3.14。格式串里的F2是標(biāo)準(zhǔn)數(shù)值格式符F表示定點(diǎn)2是小數(shù)位數(shù)想改成三位就寫F3想去掉千分位就用N2換成N。這段代碼還有個(gè)隱藏考點(diǎn)return寫在頂層語(yǔ)句里表示結(jié)束程序。如果你把它放進(jìn)一個(gè)方法里return只會(huì)退出方法后面的代碼還會(huì)繼續(xù)跑邏輯就錯(cuò)了。新手常犯的錯(cuò)是把校驗(yàn)寫在方法里卻忘了返回一個(gè)“失敗標(biāo)記”。3.2 循環(huán)與數(shù)組把排序和圖形打印寫扎實(shí)第二類題是循環(huán)。很多人覺(jué)得循環(huán)沒(méi)什么可練的但嵌套循環(huán)的邊界控制是后面所有算法的地基。我建議至少手寫一遍冒泡排序和一次圖形打印不要復(fù)制粘貼。// 冒泡排序演示數(shù)組遍歷 嵌套循環(huán) 提前退出優(yōu)化 static int[] BubbleSort(int[] source) { // 復(fù)制一份避免修改調(diào)用方傳進(jìn)來(lái)的數(shù)組 int[] data (int[])source.Clone(); int n data.Length; for (int i 0; i n - 1; i) { bool swapped false; // 本輪是否發(fā)生交換 // 每輪結(jié)束最大的元素已經(jīng)沉到末尾所以內(nèi)層可以少比一次 for (int j 0; j n - 1 - i; j) { if (data[j] data[j 1]) { (data[j], data[j 1]) (data[j 1], data[j]); // 元組交換 swapped true; } } if (!swapped) break; // 已經(jīng)有序提前收工 } return data; } int[] input { 5, 2, 9, 1, 5, 6 }; Console.WriteLine(string.Join(, , BubbleSort(input))); Console.WriteLine($原數(shù)組未被修改{string.Join(, , input)});為什么要有n - 1 - i這個(gè)減法因?yàn)槊恳惠喭鈱友h(huán)結(jié)束后末尾的i 1個(gè)元素已經(jīng)排好序了再比就是浪費(fèi)。把這個(gè)減法寫錯(cuò)成n - 1程序還能跑結(jié)果也對(duì)只是多做了無(wú)用的比較屬于“對(duì)但不夠好”調(diào)試時(shí)根本發(fā)現(xiàn)不了。swapped標(biāo)記是提前退出優(yōu)化最好的情況數(shù)組本來(lái)有序復(fù)雜度從 O(n2) 降到 O(n)。(data[j], data[j 1]) (data[j 1], data[j])是 C# 的元組解構(gòu)賦值等價(jià)于借助臨時(shí)變量交換但少寫三行。如果目標(biāo)框架版本太老不支持就老老實(shí)實(shí)寫臨時(shí)變量別硬用。圖形打印題比如輸出等腰三角形、九九乘法表練的是“循環(huán)變量和輸出位置的關(guān)系”。這類題沒(méi)有標(biāo)準(zhǔn)答案但有個(gè)自檢方法把行數(shù)從 5 改成 3 和 7看圖形是不是仍然對(duì)稱。如果不改代碼就變形說(shuō)明邊界寫死了。3.3 面向?qū)ο箢?、屬性、繼承與接口的最小閉環(huán)到了這一層題目開始從“算一個(gè)值”變成“描述一個(gè)東西”。典型的題是“定義圖形基類派生圓和矩形統(tǒng)一計(jì)算面積”。這類題看著像八股實(shí)際上是把封裝、繼承、多態(tài)三件事串起來(lái)的唯一低成本方式。// 抽象基類約束所有圖形都必須能算面積和周長(zhǎng) public abstract class Shape(string name) { public string Name { get; } name; public abstract double Area(); public abstract double Perimeter(); public override string ToString() ${Name}: 面積{Area():F2}, 周長(zhǎng){Perimeter():F2}; } public sealed class Circle(double radius) : Shape(圓) { // 主構(gòu)造函數(shù)參數(shù)直接參與屬性初始化屬性只讀避免外部亂改 public double Radius { get; } radius 0 ? radius : throw new ArgumentOutOfRangeException(nameof(radius)); public override double Area() Math.PI * Radius * Radius; public override double Perimeter() 2 * Math.PI * Radius; } public sealed class Rectangle(double width, double height) : Shape(矩形) { public double Width { get; } width 0 ? width : throw new ArgumentOutOfRangeException(nameof(width)); public double Height { get; } height 0 ? height : throw new ArgumentOutOfRangeException(nameof(height)); public override double Area() Width * Height; public override double Perimeter() 2 * (Width Height); } // 多態(tài)調(diào)用方只認(rèn) Shape不關(guān)心具體是哪種圖形 ListShape shapes [new Circle(2), new Rectangle(3, 4)]; foreach (Shape s in shapes) Console.WriteLine(s);public abstract class Shape(string name)用的是主構(gòu)造函數(shù)語(yǔ)法參數(shù)name可以直接用在屬性初始化里省掉一個(gè)顯式構(gòu)造函數(shù)。sealed表示這個(gè)類不允許再被繼承練習(xí)題階段建議加上能避免“亂繼承導(dǎo)致行為跑偏”的迷惑現(xiàn)象。屬性初始化里那句radius 0 ? radius : throw new ...是三目運(yùn)算符加拋異常的組合好處是把“不合法狀態(tài)根本創(chuàng)建不出來(lái)”這條規(guī)則焊死在類型里而不是靠調(diào)用方自覺(jué)。nameof(radius)會(huì)在編譯期變成字符串radius好處是以后重命名參數(shù)時(shí)異常信息會(huì)自動(dòng)跟著改不會(huì)寫死一個(gè)過(guò)期字符串。多態(tài)那三行是重點(diǎn)ListShape里放的是不同子類循環(huán)時(shí)調(diào)用s.Area()會(huì)自動(dòng)走到各自的實(shí)現(xiàn)。如果這里寫成Listobject再手動(dòng)判斷類型說(shuō)明多態(tài)沒(méi)理解到位題目就白做了。3.4 集合與 LINQ從 List 到鏈?zhǔn)讲樵冏詈笠活愵}是集合操作。典型題是“給一批學(xué)生成績(jī)按班級(jí)分組求平均分再按平均分倒序輸出”。這題用傳統(tǒng)for循環(huán)能寫二十行用 LINQ 五行就完了但只寫 LINQ 不寫循環(huán)版本你不知道它到底替你做了什么。public record Student(string Name, string ClassName, int Score); ListStudent students [ new(A同學(xué), 一班, 88), new(B同學(xué), 一班, 72), new(C同學(xué), 二班, 95), new(D同學(xué), 二班, 61), new(E同學(xué), 二班, 79), ]; // 按班級(jí)分組 → 算平均分 → 過(guò)濾掉平均分低于 70 的班 → 按平均分倒序 var report students .GroupBy(s s.ClassName) // 分組鍵是班級(jí)名 .Select(g new { Class g.Key, Count g.Count(), Average g.Average(s s.Score) // 組內(nèi)對(duì) Score 求平均 }) .Where(x x.Average 70) // 過(guò)濾 .OrderByDescending(x x.Average); // 排序 foreach (var item in report) Console.WriteLine(${item.Class}{item.Count} 人平均 {item.Average:F1} 分);GroupBy返回的是IGroupingTKey, TElement每個(gè)分組既能當(dāng)集合遍歷g.Count()、g.Average(...)又能通過(guò)g.Key拿到分組鍵這是它和Dictionary最大的區(qū)別。Select里用了匿名類型new { ... }適合只在當(dāng)前方法里臨時(shí)組裝結(jié)果如果這個(gè)結(jié)果要跨方法傳遞就該定義一個(gè)record否則類型沒(méi)法寫在簽名上。Where和OrderByDescending的順序會(huì)對(duì)結(jié)果產(chǎn)生影響雖然這里邏輯上先過(guò)濾再排序和反過(guò)來(lái)結(jié)果一樣但數(shù)據(jù)量大時(shí)先過(guò)濾能少排很多元素。這類“順序無(wú)所謂但要養(yǎng)成習(xí)慣”的細(xì)節(jié)就是練習(xí)題和真實(shí)項(xiàng)目之間的差距所在。4. 自證與調(diào)試給每道題配一套能跑的校驗(yàn)練習(xí)題最大的問(wèn)題是沒(méi)人給你判對(duì)錯(cuò)。控制臺(tái)輸出一行“面積 12.57”你怎么知道是自己算對(duì)了還是碰巧如果每道題都靠肉眼對(duì)比練到第十題就會(huì)開始偷懶隨手跑一遍看著像對(duì)的就過(guò)了。所以我在練習(xí)倉(cāng)庫(kù)里固定加一層極簡(jiǎn)斷言讓每道題都能自證。4.1 手寫一個(gè)不到三十行的斷言器不用引入第三方測(cè)試框架練習(xí)階段一個(gè)靜態(tài)類足夠好處是零依賴、打開就能用也不會(huì)被一堆測(cè)試配置勸退。public static class Check { private static int _pass; private static int _fail; // 值比較用 Equals 而不是 能兼容裝箱后的值類型和字符串 public static void That(string caseName, object? actual, object? expected) { if (Equals(actual, expected)) { _pass; Console.WriteLine($[通過(guò)] {caseName}); } else { _fail; Console.WriteLine($[失敗] {caseName} 期望{expected} 實(shí)際{actual}); } } // 浮點(diǎn)比較單獨(dú)處理直接 Equals 會(huì)因?yàn)榫葐?wèn)題永遠(yuǎn)不相等 public static void Near(string caseName, double actual, double expected, double tolerance 1e-6) That(caseName, Math.Abs(actual - expected) tolerance, true); public static void Summary() { Console.WriteLine($\n合計(jì) {_pass _fail} 項(xiàng)通過(guò) {_pass}失敗 {_fail}); if (_fail 0) Environment.Exit(1); // 有失敗就讓進(jìn)程返回非零方便腳本判斷 } }Equals(actual, expected)是靜態(tài)方法會(huì)自動(dòng)處理 null比actual expected安全——后者在兩邊都是引用類型且沒(méi)重載運(yùn)算符時(shí)比的是引用地址字符串雖然重載過(guò)但其他類型不一定。Near專門給浮點(diǎn)用tolerance默認(rèn)1e-6如果題目要求保留兩位小數(shù)可以放寬到0.005。最后那個(gè)Environment.Exit(1)是給自動(dòng)化留的口子有失敗用例時(shí)進(jìn)程退出碼非零外面用 shell 或 CI 一判就知道過(guò)沒(méi)過(guò)。4.2 把題目改造成“輸入 → 計(jì)算 → 返回”三段式斷言要能用前提是邏輯不能和Console.ReadLine攪在一起。做法很簡(jiǎn)單把純計(jì)算抽成一個(gè)返回值的靜態(tài)方法Main只負(fù)責(zé)讀輸入、調(diào)方法、打印結(jié)果。// 純函數(shù)只依賴參數(shù)不碰控制臺(tái)方便斷言 static double CalcCircleArea(double radius) { if (radius 0) throw new ArgumentOutOfRangeException(nameof(radius), 半徑必須大于 0); return Math.PI * radius * radius; } // Main 里只做 IO邏輯一行調(diào)用 Console.Write(請(qǐng)輸入半徑); if (double.TryParse(Console.ReadLine(), out double r)) { try { Console.WriteLine($面積 {CalcCircleArea(r):F2}); } catch (ArgumentOutOfRangeException ex) { Console.WriteLine(ex.Message); } } // 校驗(yàn)部分集中在文件末尾改題時(shí)只動(dòng)上面不動(dòng)這里 Check.Near(半徑 2 的面積, CalcCircleArea(2), 12.566370, 1e-3); Check.Near(半徑 0.5 的面積, CalcCircleArea(0.5), 0.785398, 1e-3); Check.That(半徑 0 應(yīng)拋異常, CatchType(() CalcCircleArea(0)), typeof(ArgumentOutOfRangeException)); Check.Summary();抽成純函數(shù)之后同一份邏輯既能在Main里跑給人看又能被斷言調(diào)用改一次兩邊都受益。CatchType是個(gè)十行的小工具捕獲異常并返回類型static Type? CatchType(Action action) { try { action(); return null; } // 沒(méi)拋異常返回 null catch (Exception ex) { return ex.GetType(); } // 拋了就返回實(shí)際類型 }參數(shù)Action表示“無(wú)參無(wú)返回值的委托”所以調(diào)用時(shí)要包成() CalcCircleArea(0)的 lambda。返回Type?是因?yàn)椤皼](méi)拋異?!边@個(gè)分支沒(méi)有類型可返回用可空類型表達(dá)最自然這也正好呼應(yīng)了第 2 章開啟的Nullable。4.3 邊界用例與異常路徑怎么定寫完斷言之后最容易被忽略的是“該測(cè)哪些值”。我的習(xí)慣是每題至少四類正常值一個(gè)、邊界值一個(gè)0、空字符串、數(shù)組首尾、非法值一個(gè)負(fù)數(shù)、字母、null、規(guī)模極值一個(gè)空數(shù)組、單元素?cái)?shù)組。這四類覆蓋下來(lái)題目里的if分支基本都能走到。跑的時(shí)候用dotnet run --project src/Ex01_Types看輸出里有沒(méi)有[失敗]。如果有先看期望值和實(shí)際值差多少差一點(diǎn)點(diǎn)多半是精度差一整倍多半是公式寫錯(cuò)差個(gè)符號(hào)多半是邊界條件取反了。這套流程走順之后調(diào)試就從“盯著屏幕猜”變成“看斷言報(bào)告定位”。5. 常見問(wèn)題排查練習(xí)時(shí)最容易翻車的五個(gè)點(diǎn)下面這幾條是我?guī)俗鼍毩?xí)時(shí)反復(fù)見到的基本每個(gè)新手都會(huì)中一兩條。寫法統(tǒng)一按“現(xiàn)象 → 原因 → 解決”來(lái)遇到時(shí)直接對(duì)號(hào)入座。5.1 語(yǔ)言與類型層面的坑坑一一開Nullable滿屏黃色警告代碼像錯(cuò)了一樣?,F(xiàn)象是剛在Directory.Build.props里打開Nullableenable/NullableProgram.cs里就出現(xiàn)CS8600、CS8602、CS8618一串警告程序還能跑但看著心里發(fā)毛很多人第一反應(yīng)是把開關(guān)關(guān)掉。原因是可空引用類型把“這個(gè)變量可能是 null”從運(yùn)行時(shí)隱患提前到了編譯期提示。Console.ReadLine()確實(shí)可能返回 null比如輸入流被重定向且沒(méi)有內(nèi)容string? raw接住它是對(duì)的但接著raw.Length就會(huì)報(bào)CS8602因?yàn)榫幾g器無(wú)法保證raw非空。CS8618則是“非空屬性在構(gòu)造函數(shù)結(jié)束時(shí)還沒(méi)賦值”。解決辦法不是關(guān)開關(guān)而是把警告當(dāng)提示用能判空的就判空if (raw is null) return;確實(shí)非空的就用!斷言并寫注釋說(shuō)明為什么安全屬性用主構(gòu)造函數(shù)或required修飾符保證初始化。練習(xí)題階段建議全部老老實(shí)實(shí)判空別用!圖省事這個(gè)習(xí)慣帶到真實(shí)項(xiàng)目里會(huì)救命??佣麛?shù)相除結(jié)果永遠(yuǎn)是整數(shù)平均分算出來(lái)少一截?,F(xiàn)象是求平均分int avg total / count;輸入 3 個(gè) 90 分期望 90 實(shí)際也是 90看著沒(méi)問(wèn)題但輸入 3 個(gè) 88、89、90期望 89 實(shí)際 89還是看不出問(wèn)題直到輸入 2 個(gè) 1 和 2期望 1.5 實(shí)際 1。原因是 C# 里兩個(gè)int相除結(jié)果類型還是int小數(shù)部分直接截?cái)嗖皇撬纳嵛迦?。這是語(yǔ)言規(guī)定不是 bug所以不會(huì)有任何警告。解決辦法是把其中一個(gè)操作數(shù)轉(zhuǎn)成浮點(diǎn)double avg (double)total / count;或者total / (double)count。注意(double)(total / count)是錯(cuò)的因?yàn)槔ㄌ?hào)里先算完除法再轉(zhuǎn)換那時(shí)小數(shù)已經(jīng)丟了。這類題我強(qiáng)烈建議在斷言里放一組除不盡的用例不然永遠(yuǎn)發(fā)現(xiàn)不了。坑三浮點(diǎn)數(shù)用比較兩個(gè)“相等”的值判成不等?,F(xiàn)象是0.1 0.2 0.3返回false用Check.That斷言直接失敗但打印出來(lái)看兩個(gè)值明明都是0.3。原因是double用二進(jìn)制表示十進(jìn)制小數(shù)0.1和0.2都無(wú)法精確表示相加后是一個(gè)極接近但不等于0.3的值。這跟語(yǔ)言無(wú)關(guān)是 IEEE 754 的固有特性。解決辦法是所有浮點(diǎn)比較都改成“差值絕對(duì)值小于容差”也就是第 4 章那個(gè)Check.Near。容差取多少看題目要求算面積這種可以取1e-6要求保留兩位小數(shù)的可以取0.005。涉及金額的場(chǎng)景干脆別用double改用decimal它不是二進(jìn)制浮點(diǎn)能精確表示十進(jìn)制小數(shù)代價(jià)是運(yùn)算慢一點(diǎn)。5.2 工程與運(yùn)行層面的坑坑四dotnet run報(bào)“找到多個(gè)入口點(diǎn)”?,F(xiàn)象是命令行一跑就報(bào)CS0017: 程序定義了多個(gè)入口點(diǎn)編譯直接失敗一個(gè)題都跑不了。原因是你把兩個(gè)Program.cs放在了同一個(gè)項(xiàng)目里或者給某道題新建了項(xiàng)目卻沒(méi)在正確的目錄下執(zhí)行dotnet run——頂層語(yǔ)句會(huì)自動(dòng)生成Main兩個(gè)文件就兩個(gè)Main編譯器不知道該用哪個(gè)。解決辦法是確認(rèn)“一題一項(xiàng)目”跑的時(shí)候帶上--project指定到具體目錄dotnet run --project src/Ex02_Loops。如果確實(shí)需要在同一項(xiàng)目里放多個(gè)練習(xí)入口那就把它們寫成帶名字的靜態(tài)方法只在Program.cs里保留一個(gè)Main負(fù)責(zé)分發(fā)別再新增頂層語(yǔ)句文件??游蹇刂婆_(tái)輸出中文變成亂碼?,F(xiàn)象是打印“請(qǐng)輸入半徑”時(shí)終端里顯示的是一串問(wèn)號(hào)或者方塊。原因是控制臺(tái)編碼和源文件編碼不一致。源文件默認(rèn)是 UTF-8而部分終端默認(rèn)代碼頁(yè)不是 UTF-8輸出時(shí)就會(huì)錯(cuò)位。解決辦法有兩個(gè)層次一是在Program.cs開頭加一行Console.OutputEncoding System.Text.Encoding.UTF8;讓輸出走 UTF-8二是檢查終端本身的編碼設(shè)置把它調(diào)到 UTF-8。第一種更省事我一般在模板里就寫死新題復(fù)制過(guò)去自動(dòng)生效。順帶說(shuō)一句讀入中文時(shí)同理必要時(shí)把Console.InputEncoding也設(shè)上。6. 二次開發(fā)把題目集改成自己的題庫(kù)與自動(dòng)判題器練習(xí)題做通關(guān)之后多數(shù)人就停在那了。其實(shí)這套東西稍微改一改能變成一個(gè)自己長(zhǎng)期用的刷題系統(tǒng)甚至給團(tuán)隊(duì)新人當(dāng)入職訓(xùn)練。我自己的改法是三步把題目元數(shù)據(jù)化、把運(yùn)行入口統(tǒng)一、把校驗(yàn)結(jié)果匯總成報(bào)告。第一步是給每道題加統(tǒng)一接口。現(xiàn)在每題各寫各的Main想批量跑只能靠 shell 循環(huán)。改成定義一個(gè)接口每道題的邏輯實(shí)現(xiàn)它再寫一個(gè)調(diào)度器用反射把所有實(shí)現(xiàn)找出來(lái)跑// 所有題目統(tǒng)一實(shí)現(xiàn)這個(gè)接口調(diào)度器只認(rèn)它 public interface IExercise { string Id { get; } // 題號(hào)如 Ex03_02 string Title { get; } // 題名報(bào)告里顯示 bool Run(); // 返回 true 表示本題全部用例通過(guò) } // 以冒泡排序題為例 public sealed class Ex03_02_BubbleSort : IExercise { public string Id Ex03_02; public string Title 冒泡排序并返回新數(shù)組; public bool Run() { // 這里復(fù)用第 4 章的 Check但把 Summary 換成返回值 Check.That(普通數(shù)組, string.Join(,, BubbleSort([5, 2, 9])), 2,5,9); Check.That(已有序數(shù)組, string.Join(,, BubbleSort([1, 2, 3])), 1,2,3); Check.That(單元素?cái)?shù)組, string.Join(,, BubbleSort([7])), 7); return Check.Failed 0; } private static int[] BubbleSort(int[] source) { /* 同第 3 章實(shí)現(xiàn) */ return source; } }第二步是寫調(diào)度器掃描當(dāng)前程序集里所有IExercise實(shí)現(xiàn)并依次執(zhí)行。Activator.CreateInstance要求類型有無(wú)參構(gòu)造函數(shù)所以題目類別寫帶參構(gòu)造。用typeof(IExercise).IsAssignableFrom(t)判斷而不是t typeof(IExercise)前者能匹配到所有實(shí)現(xiàn)類包括間接實(shí)現(xiàn)。var exercises typeof(IExercise).Assembly.GetTypes() .Where(t typeof(IExercise).IsAssignableFrom(t) !t.IsAbstract !t.IsInterface) .Select(t (IExercise)Activator.CreateInstance(t)!) .OrderBy(e e.Id); int failed 0; foreach (var ex in exercises) { bool ok ex.Run(); Console.WriteLine(${(ok ? PASS : FAIL)} {ex.Id} {ex.Title}); if (!ok) failed; } Console.WriteLine($\n共 {exercises.Count()} 題失敗 {failed} 題); Environment.Exit(failed 0 ? 0 : 1);第三步是把它接進(jìn)日常流程。我會(huì)在倉(cāng)庫(kù)根目錄放一個(gè)run-all.sh內(nèi)容就一行dotnet run --project src/Runner然后每次改完題目先跑它。退出碼非零就說(shuō)明有題被改壞了這時(shí)候再去看具體是哪道題失敗比逐個(gè)項(xiàng)目手點(diǎn)快得多。想再進(jìn)一步可以把Check里的通過(guò)數(shù)、失敗數(shù)輸出成 JSON長(zhǎng)期記錄每道題的通過(guò)率哪題反復(fù)錯(cuò)就重點(diǎn)補(bǔ)那一塊。改造過(guò)程中最容易翻車的地方是題目類沒(méi)有無(wú)參構(gòu)造函數(shù)反射時(shí)會(huì)拋MissingMethodException報(bào)錯(cuò)信息還不直接指向原因。血淚經(jīng)驗(yàn)是題目類只放字段、屬性和方法需要注入的東西一律通過(guò)方法參數(shù)傳別在構(gòu)造函數(shù)里做初始化。另外一個(gè)后悔藥是給調(diào)度器加上 try/catch某道題拋異常時(shí)記一筆繼續(xù)跑下一道否則一道題崩掉整個(gè)報(bào)告都出不來(lái)。從那以后我每次把練習(xí)倉(cāng)庫(kù)交給別人跑之前都會(huì)先在一個(gè)干凈目錄里dotnet build加run-all.sh走一遍確認(rèn)沒(méi)有隱式依賴本機(jī)環(huán)境的東西再發(fā)出去。這套習(xí)慣看起來(lái)啰嗦但省下來(lái)的解釋成本遠(yuǎn)比這幾分鐘多。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲成人av电影在线| 青青久久久| 天天大干大香蕉| 亚洲伊人a线观看视频| 亚洲色图欧美色图制服诱惑| 无码国产精品久久久久| 久久久久久人体| 女同在线视频一区| 亚乱色| 国内一区二区三区| 五月婷婷激情| 伊人久久综合影院| 啊啊啊操死我| 99热aaa| 日韩精品 视频一区二区| 91性情| 97爱亚洲综合色| 国产欧美日韩一区二区三区| 风韵犹存大大大大香蕉 | 97在线观看播放视频| 亚洲毛片基地专区| 91人妻精华帖| 欧美日韩97| 蜜臀va69| 久久色一区二区| 久热香蕉精品在线视频| 综合夜夜| 久草午夜| 亚洲欧美国产va在线播放频| 亚洲色综合| 亚洲综合第一页| 中文字幕十五区| 免費人妻夜夜爽天天爽爽一区| 碰碰97| 超碰538| 久久女婷| 人人妻人射| 天天躁日日躁xxxxx| 欧美色图另类图片| 国产 大胆 对白| 青娱乐手机日韩在线视频| www.99热| aaaa少妇高潮大片| 午夜精品五区| 天天天天天天天天天天干美女| 手机在线中文字幕国产| 亚洲欧洲精品视频发布| av最新免费中文字幕| 久久亚洲国产成人| 超碰97久久| 久九九九| 97超碰欧美| 97天堂| 韩日色费| 亚洲日韩美国人妻| 亚洲激情av| 中文字幕在线观看丝袜| 91校园春色长篇| 在线啊啊啊啊| 内射中出日韩在线观看视频| 中文字幕艹艹| 亚洲精品天天影视综合网 | 久九九九九九九热| 国产第11页| 日本 成 人 小说 电影 一区二区| 欧美性爱中文字幕无线码| www.99中文字幕| www色色com| 熟女一区二区| 亚春色色| 国产日韩久久| 再深点灬舒服灬太大了添视频| 日本三级A片网站com| 在线日韩日本亚洲国产| 国产精品诱惑| 91丨熟女丨丰满熟女| 涩五月婷婷| 97色色婷婷| 欧美三级一级| 精品久久久一本一道| 97视频在线播放| 乱伦AVxx| 亚洲蜜臀懂色| 少妇久久| 99re8超碰| 60秒试看最爽10分钟网站| 91国产丝袜美女| 久久精品人妻一区二区三区| 成人青青草原伊人| 久久精品久久九九精品| 欧美第一页性| 97超碰色情| 国产91影院| 成人av在线播放| 日va操| 亚洲欧美校园另类春色| 欧美激情精品久久久| 91bbb| 丁香六月东京热| 中日韩久久人妻一区二区| 91丝袜人妻| 操逼视频亚洲| 91视频综合在线| 日韩人妻有码免费视频| 亚洲熟妇丝袜在线观看| 懂色aV一区二区天美传媒| 99久久99九九99九九九| 骚熟女AV网| 日本欧美一区二区三区免费| 91欧美美女日韩国产婷婷| 欧美亚洲涩涩| 久久国产免费激情视频| 嫩草伊人久久精品| 自拍内地三级在线观看| 黑人中出21连凳花野真衣| 国产精品久久久久久久久久久久久久吹 | 国产探花日韩援交| 亚洲色图久久成人| 91天天| 红杏大香蕉| 精品久久久一本一道| 黄片www.| 人妻人妻天天碰| 人妻少妇精品视频一区二区三区| 人妻精品一区二区在线| 欧美 亚洲| 天天插天天操| 国产精品久久久午夜夜伦鲁鲁| 少妇大屁屁| 日本片日本片祼观看网站在线看中文版网页在线看| 9.1小视频| 国产浮力影院第1页| 国产99999久久精品| 免费一级特黄特色大片在线观看看| 亚洲成人一二三区| 爽极品影院| 天天插夜夜爽| 欧洲无码一区二区| 国产精品免费1区2区视频| 久久97| 国产精品96| 国产精品国产自产拍高清AV| 福利操逼| 天美传媒麻豆一区二区三区国产精| 337p大胆噜噜噜噜噜91Av| 精品人妻久久久久一区二区三区| 狠狠狠狠狠干| 色操逼网| 久久丝袜| 亚洲欧美天| 五月天激情网站| 欧美后入| 久99在线免费观看视频| 亚洲综合九| 99免费在线视频| 欧美极品美女aaaaaa级黄片| 亚洲影视高清第一页| 狠狠色丁香| 国产精品露脸在线观看| 天美传媒麻豆一区二区三区国产精| 91狠狠综合久久| 亚洲国产综合视频| 2026国产精品视频| 99色热| 亚洲无码精品AV久久久| 国产热av| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 久久精品欧美一区蜜桃| 日韩一区二区精品视频| 大色网久久| 黄色一级视| 9999久久久久| 色娱乐色呦呦夜夜夜夜av| 丰满人妻一区二区三区| 青椒国产97在线熟女| 日本天天干天天操一区| 欧美亚洲日韩16色| 国产夜夜艹| 日本熟妇人妻中出视频| 中文精品一区二去| 夜色综合| 91国产丝袜白虎| 老女人碰碰在线碰碰视频| 97超碰国产亚洲精品资源| 中文字幕日韩人妻视频一区二区三区 | 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 国产一区二区三区高清视频| 91bbbbbb| 久久久久久加勒比| 久久久免费高清中文视频| 天天影视射综合网| 日本久久综合| 一本一首道人妻少妇免费久久| 丁香色色网| 亚洲暴力强奸AV| 一级片在线观看高清无码| 97天堂| 91bbbbbb| 97碰碰色| 91亚洲情色| 国产蜜臀精品一区二区尤物| 97视频新免费| 人妻少妇视频在线播放| 五月天大香蕉| 另类图片五月天| 亚洲综合色网| 久久婷婷一区二| 中文字幕啊啊啊在线观看视频| 肉动漫无遮挡h在线观看| 久久久性爱| 校园春色五月天| 1240青青草一区二区三区视频天爱| 足交视频老司机| 伊人国产视频| 精品四五区| 国产人妻精品久久久一区二区三区| 亚洲精品日韩国产欧美| 亚洲精品一二区| 8050无码八戒| 91亚州日韩高清| 97天天爽| 久久亚洲熟妇在线视频| 蜜臀99久久国产| 蜜臀久久99精品久久久久久无删减| AV天堂因数| 亚洲怡春院| 亚洲丰满很很操| 亚洲欧美啪啪| 精品对白久久不卡| 久久久精品电影| 日韩性爱1级片视频| 免费公开人人操| 国产网红精品| 性爱1区| 99久久com免费视频′| 大香蕉人妻| 天美av在线观看| 日日AV加勒比| 97亚洲在线| 亚洲无码超碰免费| 一本一道vs波多野结衣| 大香蕉综合网| 2026国产精品视频| 亚洲精品一二牛牛| 八戒午夜福利理论片| 强奸乱伦AV网站| 一区二区三区精品黑丝白丝酒店对鸡 | 国产99久久99热这里只有精品15| 又粗又长又爽在线观看| 欧美婷婷| 免费草草草草草视频| 日本 情色 1区| 国产拍偷精品网站| 成人精品在线| 黑人干亚洲| 日韩免费一级性爱视频| 色婷婷六月| 亚州综合色图| 思思热国产高清| 免费亚洲黄色视频在线观看 | 69丨亚洲丨精品丨入口免费播放| 成人小电影网站tex| 国产AV激情无码久久无码| 精品国产一区二区三区av在线资源| 草久久久| 99亚洲精品| 97资源制服丝袜| 色欧洲97| 逼操网站| 午夜欧美J进J出白浆流出久久久| 亚州欧美在线| 亚洲精品视频在线| 一二三四区操操Av| 日本精品无码三级网站| 在线 亚洲 网爆 自拍| 天天日日日射| 色哟哟 日韩精品| 噜噜吧,噜噜色,噜噜| 日韩情色视频| 亚洲综合20p| 色99视频| 久久久久白虎| 国产超碰人人操| 亚洲人码13| 狠狠中文字幕| 精品人妻一区春色| 国产A v无码专区| 精品人妻一区春色| 免费在线观看国内色片网站网址| 情侣操 逼视频99| 1769一区| 午夜精品久久久久久久99热影院| 日本淫乱女一区二区三区视频| 黄色性爱网网| 性欧美第一页| 九九热免费视频| 91精品人妻一品二品三品| 91一起操| 97天天操| 国产欧美一区二区| 精品中文字幕一区二区| 亚洲清纯唯美| 久热99| 91岛国动作片| 干B视频伊人网| 亚洲国产av中文字幕久久| 99热导航| 久久综合婷婷| 思思久热在线精品66| 久久的网站啊啊啊啊啊| 日本免费一级AAA大片器| 欧美性爱一区二区三区四区 | 女同在线视频一区| 密乳无码| 亚洲男人天堂2017| 97看操| 超碰成人最新最好看| 日韩精彩视频| 人妻久久久| 国产精品久久久| 1204av韩国| 秋霞曰韩R级| 日韩猛交| 亚洲第91页 | 欧美亚洲宗合色性图| 熟女人妻一区二区三区| 69精品| 日夜干射色啊| 99久久婷婷国产综合精品草原| 91久| 加勒比久久av| 91在线色| 久久综合婷婷| 国产激情av女片自拍| 91老熟女视频| 蜜桃臀久久| 亚洲精品一二三四区| 日本一区二区不卡精品| 中文字幕欧美丝袜07资源| 爱妻综合网| 国产亚洲 中文欧美久久| 国产福利在线视频网站| 黄色无码高清黄色无码网站| 中文无线日韩一区| 麻豆天美制片厂网站视频| 无码抄逼网| 国产美女口爆吞精视频| 久久久久久97| 国产91丝袜 在线播放| 神马久久69| 蜜臀久久99精品久久久久久久久| 一级性爱啪啪视频| 2019天天干| av日韩中文字幕| 久久久久久中文版| 亚洲欧美爆| 色99视频| 色婷婷激情| 图片区小说区| 美國A片| 日韩性爱啪啪视频| 69一区二区| 亚洲色图 91| 2019午夜福利视频| 国产视频大全| 日日干男人的天堂| 国产乱码久久久久久| 欧美五区| 日韩在线97| 久草视频制服诱惑| 久久久久久性爱视频| 人妻天堂综合网| 桃花色涩综合影院| 婷婷月色| 五月天婷婷基地| 国产精品亚洲一区二区三区四区| 夜间福利片1000无码| 国产成年女人免费视频播放a| 国产丝袜啪啪| 亚洲无码一区成人免费午夜| 久久精品电影在线| 色逼综合| 久操视频在线观看| 国产精品蜜臀久久久久无码AV| 天天综合91| 色综合一区二区三区| 超碰2017| 日本熟女不卡视频| 爽极品影院| 亚洲第2页| 男人的天堂一区三区| 国产一级黄色片在线观看| 牛牛aV| 日本精品不卡一二三区| www.99热| 91色鬼| 亚洲大色堂| 91AV天堂| 日韩欧美三级| 亚洲无 码A片在线观看麻豆| 99re免费视频精品全部| 久久一区二区高清免费| 色五月婷婷麻豆在| 绯色AV粉色AV蜜臀AV| 青青草色插素人| 校园春色家庭伦理欧美激情| 欧美色图20P| 亚洲 无码 偷拍| 久久久久亚洲av综合波多野制衣| 制度丝袜99| av一区二区三区 中文| 伊人网av| 麻豆a'v电影| 极品另类| 国产情侣自拍在线播放| 天天综合网久久ww| 熟妇女伦乱视频视频| 青草精品视频-日本久久久久网站| 亚洲国产综合图区中文字幕| 久久久久成人亚洲国产| 天天综合色电影| 无码久| 丰满人妻一区二区三区免费| 99国产精品视频尤物| 五月天色综合| 日日做夜狠狠爱欧美黑人| 亚洲资源一区| 欧美一区二区三区蜜桃| 好淫网一二三视区| 天操天操夜操夜月月年年操操| 久久女人| 激情久久av一区av二区av| 久久人人爽爽爽人久久久| 天天大干大香蕉| 一区二区三区免费视频入口| 婷色五月| 久草成人影片| 伊人丁香五月婷婷| 老鸭窝亚洲毛片| 国内外毛片在线观看| 国产精品一二三区18| www激情| 中国的操老妇女| 日韩一区二区精彩视频| 日韩三级一区 | 性色A∨91| 欧美色性爱| 久久久中文版| 一级性爱视频免费在线| 久久免费老司机精品| 国产尤物在线三区| 澳门特级毛片免费观看| 久草草一二三四区久久| 1人人看人人摸人人操| 69人妻人人揉人人躁人人精品| 亚洲清纯唯美| 岛国片国产成人亚洲播放| 偷拍亚洲高清图片| 成人26uuu| 国产suv精品一区二区四区999| 欧美亚洲清纯| 欧美日韩99| 人妻夜爽夜夜爽| 国产成人无码网站在线视频| 国产91丝袜 在线播放| 亚洲国产日韩欧美熟妇在线| 亚洲91射| 激情五月天婷婷| 一区二区视频在看| 欧插网站| 岛国黄片网站| 欧美少妇性乱| 四虎影视永久在线免费| 嫩草 我啊~嗯~在线| 欧美系列在线一区二区| 1204人成网站色www| 精品成人av一区二区三区在线| 亚州男人的天堂| 久久91精品国产9丨久久分亭| 99国产精品免费| 激情抓乳插进去啪啪啪日韩 | 婷婷香蕉欧美在线一区二区三区| 亚洲毛片久久| 丝袜美腿欧美| 久久久久久久久久久免费精品| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 1024人妻熟女一区二区三区| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 91东北熟女| 国产久久视频| 国产操逼逼网| 天天操天天干美女网址导航| 九九热九九热| 欧美性爱日韩性爱| 麻豆视频一区二区| 99国产精品免费| 成人av动漫在线观看| 青草精品视频日本久久久久网站在线| 一区二区三区视频在线观看免费| 99热精品在线观看| 99自拍B亚洲| 欧美亚洲日本视频久久久| 青娱乐黄色录像| 啊啊啊97视频| 91丨九色丨东北熟女| 亚洲婷婷丁香在线| 天天躁夜夜躁狠狠躁AV| 欧洲无码一区二区| 国产三区免费在线观看| 中文字幕欧美丝袜07资源| 亚洲和欧美裸体美女双飞视频| 青娱乐亚洲自拍| 日本不卡在线二区三区| 中文久久96| 国语人妻精彩刺激| 色青青久久影视| 午夜小电影在线插入淫高潮 | 脫衣舞一区二区三区| 99精品九九九九九九| 免费网站观看www在线观| 丁香婷婷大香蕉| 国产强奸乱伦xd| 91综合网在线| 欧美色图小说综合| 九九亚洲精品| 国产免费大片| 大香蕉九九| AA特级绝黄| 国产高清视频无码在线| 欧美日韩狠狠爱| 丝袜狂射91| 日本 免费 一区二区三区 久久香蕉| 欧美国产伊人久久久久| 亚洲囯产精品女人久久久| 9久精品| 91国产丝袜白虎| 中亚黄色三级大片| 加勒比综合九九99视频在线播放| 欧美性爱五月天| 最新日产中文在线麻豆| 国产黄片精品在线| 精品国模无码| 欧美精品久久96人妻无码| 久久精品无码专区| 午夜啊啊| 伦理第一页| 欧美96在线|欧| 精品免费成人久久| 久操免费电影| 日本熟妇人妻一区二区三区| 欧美性色欧美| 青青草一区二区高清无码视频| 午夜AV污污污| 后入日本1234| 9 1果冻精品视频| 伊人欧美大香蕉视频| 色哟哟av| 色综合天天爱去电影网| 91精品久久久久| 麻豆尤物视频网| 97亚洲综合在线| 97ai亚洲| 日日爱99| 熟妇xxxxx性春色| 人人艹亚洲| 国产精品一级特黄aaa大片在线观看| 18禁看网站一区| 爱妃国产亚洲视频中文字幕| 久热影视| 日韩午夜精品一区二区三区电影| 色黄色美女大长腿午夜视频| 五月丁香社区婷婷日韩欧美精品影院| 精品高清一区二区三区三州| 亚洲最大AV网| 五月综合色| 日本三级人妻a人妻一在线| 日韩中文字幕熟妇人妻| 久久久不卡区一区二区三区久久久| 欧美中文字幕一区| 久热大香蕉网站| 99re28在线观看| 男人天堂网站| 中文字幕乱在线伦视频中文字幕乱码在线| 免费看黄视频亚洲网站| 精品婷婷| 国产有码一区| 久久精品无码不卡| 9999久久久| 深夜福利黄片| 国产成人无码a| 精品少妇人妻一区二区三区| 久久久草草精品| 九九热国产| 日本操逼aaaaa| a天堂视频| 蜜桃视频精品一区二区| 亚洲永久永久永久永久一级一级一级精品| 第一高清av中文字幕| 日本人体九九九九九九| 韩日巨乳美女免费视频在线观看| 职场同事知名国产国产精品久久欧美日韩| 91麻豆天美国产欧美高潮| 狠狠超| 中文字幕AV乱伦| 亚洲一区中文字幕一区| 日韩在线人妻网站| 精品人妻15区| av在线不卡一区二区三区| 国产亚洲99久久精品| 中文乱码99| 九九热只有精品| 久久久久久人妻一区精品色欧美| 色色五月天激情| 大香蕉综合久久| 丝袜亚洲综合| 九九久久99| 国产视频小说| 日韩人妻一区二区| 五月天大香蕉| 丰满人妻一区二区中文| 欧洲黄色网| 九九热在线视频| 久久久久久裸体| 777AV电影| 97色97好| 97超碰人人模人人拍人人| 亚洲一区中文字幕一区| 97视频在线视频| 久久伊人亚洲AV无码网站| 超碰97欧美在线| 天天日天天看| 婷婷99狠狠| 18精品一二区| 日韩AC| 欧美手机在线综合| 美中日韩无码| 任你干在线视频| 色黄色美女大长腿午夜视频| 国产成人主播| 免费观看国产不卡av| 亚洲永久AV无码精品秋霞| 一级乱伦网站| 97色爱| 日韩免费三级黄片电影| 色呦呦、国产精品| 热思思免费视频| 视频在线观看一二三区| 成人羞羞视频国产| 日韩精品熟妇| 日本免费中文字幕在线| 激情四射五月天| 国产精品久久久久久片| 天天在线91| 狠狠色综合网| 久久久久久久97| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 五月天婷婷久久| 婷婷人妻激情| 夜夜爽77777| 午夜小电影在线插入淫高潮| 久久亚洲天天做| 国产成人午夜视频网址| 国产AB视频| 能看的AV| 亚欧免费观看视频| 九九九影院| 人妻-91porn| 老熟妇91| 青青草在线视频欧美| 人人看人人插| 日本国产二线女色| 9久综合网| 久久久久久久久久va| 色悠久久久av| 夜夜爽爽爽| 日日噜噜夜夜狠狠视频无| 激情情色五月天| 91neishe| 国产乱人伦AVA麻豆软件.| 久久精品国产亚洲粉嫩| 欧美97在线观看| 日本岛国黄色网址| 日韩一区二区精彩视频| 国产熟女高潮一区二区三区| 精品少妇后入一区二区三区四区人妻巨乳| 天天澡天天爽日日AV| 欧美国产有色电影| 男人的天堂2010| 2020中文在线一区二区三区| 精品久久97| 神马影院午夜福利久久久| 俺去也婷婷| 国产操操日韩三级黄| 天美传媒AV在线播放| 加勒比伊人综合| 天天操女人| 2024人人操人人摸| 国产高清免费不卡av| 免费视频97| 中文字幕免费看| 欧美综合色站| 五月天丁香| 高清无码 国产精品| 亚洲色狠| 超碰导航97| 91AV天堂| 久久精品72| 天天欧美欧美亚洲网| 日本国产欧美高清在线| gogogo免费高清看中国国语| 青青在线视频日韩欧美| 33044男人的天堂深夜备| 伊人玖玖网| 蜜桃久久久久久久| 97九色人妻| 日本久久天堂| 国产小u女在线观看| www.伪伪| 国产在线激情视频| 亚洲另类欧美精品| 国产激情视频一区区三区| 欧美丰满少妇交换91欧美精品| 欧美日韩免费专区在线| 女优视频第10页| 五月天综合| 欧美性爱另类综合| 91精品啪在线观看国产城中村| 亚洲国产丝袜熟女av| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 深喉吞精| 91在线一起| 人澡逼| 校园春色欧美| 日韩三级性| 2017天天透天天通天天擦| 超碰97最新人妻| 啊啊啊快操我视频| 91黑丝美女| 日欧毛片久久| 亚洲一区制服诱惑| 一本色道久久综合亚洲二区三区| 超硑97精品| 亚洲少妇色图自慰直播| 超碰碰激情97+久| 福利一级版子| 久久久一区二区| 99久在线精品99re8| 人妻另类| 成人性生活高清视频在线播放| 久久9久久| 大香蕉综合网| 粉嫩av平台| 欧美日韩不卡a片| 亚洲欧洲精品视频发布| 五月天婷精品激情| 婷婷午夜| 澳门成人网站久国产日韩| 久偷拍| 成人精品视频| 欧美草草高清日韩视频| 少妇色| 亚洲AV成人无码一二三久久| 能在线播放的国产三级| 韩国一级婬片A片AAAAA| 蜜桃成人1区2区3区| 亚欧中文字幕在线视频| 综合性视频99| 亚洲av资源| 福利视频香蕉免费一区二区在线| 国产精品麻豆免费视频| 在线强奷到舒服的无码视频| 日本在线一二| 亚洲AV不卡在线观看尤物| 欧美性五月| 91无码西班牙视频在线| 人干人人人操人人摸| 色情婷婷| 欧美亚洲美少妇一区二区| 久久精品无码不卡| 国产中出内射一区二区| 欧美成人黄网色网站| 97网址www| 久久国产999| 少妇久久久久久| 啪一啪免费视频| 啊啊啊啊啊啊啊国| 欧美一区二区三熟女剧情| 日韩国产精品人妻无码久久久| 蜜臀AV秘一区翔田千里| 大香蕉综合| 在线观看视频91| 欧美中文综合| 久久久久久AⅤ无码免费肉站| 精品超碰中文在线| 日本黄页视频在线观看| 免费在线看黄片av| 91麻豆va国产精品| 97AV在线免费观看| 免费人成毛片乱码| 91久热| 国产丸一视频| 国产欧美日本亚洲精品| 一区二区 韩日AV| 日韩国产九九精品一区二区三区毛片| 精品人妻久久久久一区二区三区| 欧美在线永久天堂| 视频二区美腿丝袜制服人妻欧美| 亚av顶级裸体一区二区三区四区五区| 97中文综合| 超碰在线观看av不卡| 91在线限制级| 亚洲天天操| 在线不卡视频| 精品熟妇视频一区二区| 男女激情黄色网址| 97色妞| 国产91av在线播放| 亚洲成人一二三区| 激情小说在线视频| 67914亚洲精品| 99AV| 99热超碰在线| 97操B| 欧美丰满熟妇XXXX性ppX人交| 欧美色图下一页| 俺去啦俺来也久久综合| 91色综合激情| 岛国1区2区3区在线观看| 肥臀熟女福利视频一区二区| 亚洲国产成人综合碰碰三级经典| 九九激情网| 加勒比海人人操超碰在线| 亚洲超碰在线| 黑人在线91| 日韩啪啪啪啪啪| 60秒不遮不挡| 性色avv| 欧美高清18A片| 插老姨肥穴| A 在线网址| 青青伊人加勒比海| aaaa少妇高潮大片| 亚洲精品蜜桃久久久| 国产精品成人在线| 91狠狠综合网| 麻豆福利视频导航| 韩日性爱av| 天操天操夜操夜月月年年操操 | 久久久9品一区二区三区| 色综合加勒比| 超碰97玖玖爱| 97欧美性爱| 国产在线激情| 日韩中字av一区| 岛国片在线播放| 操曰本熟女| 五月天激情影院| 91色综合| 97亚洲欧美日韩| 久久一级无码精品毛片6| 伊人9| 国产后入精品| 久久精品欧美一区二区三区不卡| 欧美熟妇亚洲版| 9色在线| 久久精品国产精品一区 | 性爱乱伦视频免费| 91色伦| 九九玖玖精品| 天堂中文日本在线观看| 人人操人人肉久久精品| 欧美老妇女内射网址| 亚洲中文字母在线播放| 国产精品96| 免费亚洲国产精品久久一区| 天天爱天天操| 亚一综合久久久久久久久久| 清纯唯美第一页| 插老姨肥穴| 日本久久精品| 欧美成人四级在线播放| 五月情色天| 天天激色| 久久久久性熟视频| 久久男女激情视频网站| 国产精品高潮呻吟av久久4虎| 97超碰总站| 99热99re超碰精品| 精品国产久热在线观看| 久久草草亚洲蜜桃臀| 精品国产a∨一区天美传媒| 亚洲一二三精品久久网| 免费一级视频特黄色大片| 高清在线不卡一区二区 视频| 色欧美色交综合| 久久超碰大香蕉| 亚洲无套久久嗯嗯| 日韩中文字幕视频在线观看| 成人午夜高潮av猛片| 久草看看看| 骚逼自拍99| 宗合情欲网| 草草影院在线视频| 狠狠综合网| 网页导航五月天免费一二三区| 可免费观看的av毛片中日美韩| 91少妇通奸网站| 99啪啪| 99re3这里只有精品| 99热这里是精品| 国产精品亚洲一区二区三区四区| 性色AV蜜色av色欲av| 91高潮| 91久久国产精品| 99精品丰满人妻无码| 日韩不卡网操逼中文字幕日韩| 天美麻豆精品视频99| 欧美激情综合| 在线啊v一区| 大伊香蕉在线视频免费| 精品一区二区综合熟妇| 强奸乱伦大香蕉| AV和黑人在线播放| 一个色导综合| 人妻干天天| 精品人妻1区| 九九热久久99精品re| 91视频伊人| 亚洲?V无码专区在线电影| 婷婷伊人五月| 中国操逼无码| 中字幕人妻一区二区三区| 欧美人与动性人交a| 国产美女在线精品免费看| 日本阿v天堂在线观看| 淫荡网址| 一区在线精品中文字幕| 在线免费观看高清无码视频| 毛片一区二区| 干我久操| 欧美日韩亚洲一区二区在线观看 | 青青草伊人久久| 色婷婷成人综合| 亚州人妻| 龙兴卡官方查询| 插插综合网天天影视网| 久艹免费| 精品人妻一区二区三区日产| 偷拍综合网| 最近2018中文字幕在线高清第一页| 日本孕妇一区二区视频操逼免费看 | 久久国产精品91| 日韩精品区二区三区不卡| 国产乱码久久| 97色欧州| 大香蕉色欲AV| 欧美人妻制服| 99亚洲国产精品色一区二区三区| 亚洲在线网站| 国产美女mm131爽爽爽爽| 人妻-91porn| 美女诱惑1区2区| 女生自91网站| 久草综合网| 日本性感人妻91| 亚洲操逼无码| 久久国产99精品72福利| 欧美78| 欧美姓爱综合网| 性暴力欧美猛交在线直播| 你想操日本小逼吗| 淫妻综合网| oumeizonghese,www| 久草电影网| 婷婷色色五月天福利| 中文字幕成人理论在线| 亚洲高潮少妇| 九区国产| 啊啊啊好想要| 艹少妇网站| 日本 成 人 小说 电影 一区二区| 91久久久视| 久久大香蕉97| 欧美激情性爱视频网站| 婷婷伊人| 97就爱干| 人人性爱视频免费| 婷婷亚洲综合| 免费看污网址| 欧美黄页| 久久久中文| 日本最新1区2区3区| 日本成人在线不卡一区二区三区 | 亚洲精品久久久久久久久豆丁网| 国产丰满少妇久久久精品影院| 男人天堂最新手机版在线青青草| 欧美色图片| 久久久97| 久久亚洲色图中文字幕| 超碰在线一区| 无码伊人久久大杳蕉中文无码| 成人精品视频一区二区| 校园激情狠狠四射| 日本操BAV| 中文字幕78| 视频一区二区免费在线| 120分钟婬片免费看| 99国内熟女露脸视频| 操逼无码操逼| 2001天天操| 亚洲熟妇A V黑人| 亚欧高清在线| 亚洲宗合网| 在线播放免费av福利片| 老女人日韩美91| 欧美双插| 屌色在线97视频| 99草精| 偷看洗澡一二三区美女| 麻豆天美在线喷水AV| 97人人夜夜精品视频| 成人影 天天操 亚洲| 国产精品乱码久久久久| 五月综合久久| 欧美草草高清日韩视频| 99久久久无码国产精品性男| 在线亚洲丝袜视频网站| se01国产在线视频| AV丝袜少妇| 成人自拍三级在线观看| 色噜噜人妻丝袜AV资源| 美女裸体无遮挡永久免费观看网站| 五月婷婷激情综合| 欧亚 另类 久| 亚洲1区| 日本不卡在线二区三区| 色五月婷婷网| 亚洲男人天堂av| 国产不卡精品91| 日韩性爱啪啪视频| 99啪啪| 精品人妻av在线播放| 龙兴卡官方查询| 国产三级日产三级韩国三级| 91劲爆| 五月丁香久久| 97日韩| 96爱综合| 久久精品毛片免费不卡| 国产精品久久久久999| 99精品成人免费看| 東南亚性呦成人伦理资源在线视频| 天天操天天舔| 欧美日韩亚洲天堂| 美女露胸露屁股| 国产又黄又爽又刺激久久久久久| 久久夜嗨| 久久久精品无码亚免费| 超碰97极品9| 偷拍欧美综合| 黑人美精品 A片| 大香蕉色欲AV| 九九九九久久久| 99久久亚洲精品无码毛片潘甜甜| 裸模AV女优| 亚洲国产高清福利视频| 欧美 色 亚洲| 久久久av爱| 色牛牛AV| 在线日韩日本亚洲国产| 极品久久久久久久久久久久久久| 日韩精品 视频一区二区| 99re黄| 夜草欧美| 五月丁香大香蕉| 国产亚洲日韩欧| 玖玖资源视频一区二区三区| 六九九九| 天天搞在线综合网| 草草草视频| 91色伦综合| 久久久久成人蜜桃精品| 无码丰满熟妇一区二区浪潮AV| 色眯眯av| 日本天天人人狠狠在线日美女| 操www| 日本不卡一二区| 91久久堂| 久久久草成人网站久久久草成人久久久草久久久 | 亚欧美综合| 超碰久久中文| 91人妻Pr| 欧美高清18A片| 亚洲日精品| 歐美性天天| 艹我哪美一区无码| 92午夜免费福利视频| 一级性爱视频免费观看 | 韩日欧亚a级| 欧美 牲| 爱爱动态120秒| 日韩AV一起草| 天天操人人操狠狠插| 97色综合中文网| 少好三P| 蜜臀AV成人精品蜜臀| 色香阁在线| 激情五月天色色| 男人高清无码一区二区| 狠狠久久手机视频精品| 97超碰超| 4tube欧美女厕所| 性交一区二区在线播放| 动漫片子网站3黄| 999狠狠综合| 色播五月丁香| 日本3级一区二区免费| 日韩亚洲中文有码视频| 日韩激情电影中文字幕| 好吊色综合| 欧美96在线|欧| 亚洲双插| 亚洲欧美综合网站| 国产精品久久久久久久免牛肉蒲团| 久久久久13| 久久一二三四五六七八九区区区| 岛国片国产成人亚洲播放| 色欲av一区二区三区蜜芽| 激情黄色片在线观看| 999久久久| 国产成人久久精品蜜臀| 96精品久久| 在线不欧美| 国产精品久久久久久久久久久久| 91日韩网站| 亚洲色图片区| 天天久久久久久| 啊啊啊啊免费视频| 国产欧美另类久久久精品课程| 日韩不卡一二三四| 丝袜狠狠草尤物 91| 天堂亚洲精品久久老牛| 国产1727欧美| 熟女精品一区二区在线观看| 日本九九久久99| 久久人妻无码毛片A片麻豆| 欧美一级专区免费大片| 九九九九精品一区| 亚欧美色图| 蜜臀Av一区二区三区| 精品一区二区三区18| 老熟女91视频| 亚洲啪啪综合?v一区综合精品区| 亚洲天天操| 三级日韩一区二区三区| 免费啪啪av| 天天做日日爱夜夜爽| 国产亚洲综合欧美一区| 精品国产一区二区三区av在线资源| 无码操逼视频一下|