From ebb9e385c5fa8f05417e8524ef52bc9de4ae072a Mon Sep 17 00:00:00 2001 From: Kister Hakusan <2753888203@qq.com> Date: Thu, 18 Jun 2026 20:01:30 +0800 Subject: [PATCH] Initial Obsidian notes backup --- .vs/MyNotes/v17/.wsuo | Bin 0 -> 13824 bytes .vs/MyNotes/v17/DocumentLayout.json | 12 + .vs/slnx.sqlite | Bin 0 -> 90112 bytes 待办/CSharp重学.md | 12 +- 笔记/CSharp/基本概念.md | 2 +- 笔记/CSharp/基础/ref和out.md | 26 +- 笔记/CSharp/核心/内部类和分部类.md | 182 ++++ 笔记/CSharp/核心/成员变量和访问修饰符.md | 4 + 笔记/CSharp/核心/成员属性.md | 7 +- .../CSharp/核心/构造函数、析构函数、垃圾回收.md | 245 ++++++ 笔记/CSharp/核心/索引器.md | 2 + 笔记/CSharp/核心/继承.md | 143 ++++ 笔记/CSharp/核心/运算符重载.md | 86 ++ 笔记/CSharp/核心/静态成员.md | 51 ++ 笔记/CSharp/核心/静态类和静态构造函数.md | 70 ++ 笔记/CSharp/练习/CSharp复习题.md | 793 ++++++++++++++++++ 笔记/CSharp笔记汇总.md | 26 +- 17 files changed, 1639 insertions(+), 22 deletions(-) create mode 100644 .vs/MyNotes/v17/.wsuo create mode 100644 .vs/MyNotes/v17/DocumentLayout.json create mode 100644 .vs/slnx.sqlite create mode 100644 笔记/CSharp/核心/内部类和分部类.md create mode 100644 笔记/CSharp/核心/构造函数、析构函数、垃圾回收.md create mode 100644 笔记/CSharp/核心/继承.md create mode 100644 笔记/CSharp/核心/运算符重载.md create mode 100644 笔记/CSharp/核心/静态成员.md create mode 100644 笔记/CSharp/核心/静态类和静态构造函数.md create mode 100644 笔记/CSharp/练习/CSharp复习题.md diff --git a/.vs/MyNotes/v17/.wsuo b/.vs/MyNotes/v17/.wsuo new file mode 100644 index 0000000000000000000000000000000000000000..3834ea73cf6221f4af30fa27f1d656319977b6fa GIT binary patch literal 13824 zcmeHN&2Jk;6n{=BP|8;+1So~NB|w2XBzABe&Xe5xh zaqA6)5QmlvXYO2(xNs^02`(Jq4?sfVhD5{fH@jnxH}+<|hI&K&tmmDXo!R&1ea)Ml z{r=j4U$1_3=r?h}DcK{}xAw`cMtj64%e^A^q0YAJTU%Sa#WIQ=*hLbUlmdQh5|uNu zifc(WsY>6_Eqg0Ezk7#K?|d2g`J*3xiQIvHAKqhko&d#yEXk{&zKGHpxwOMmYHxQ- zSA{;sUVFEG?L{=hd=+T=q+66cI4Fq)oPsRUK+EaZ=+Yxy5mVib`kCzms4P1T=VcvK z@{+^+i5CpY<7g?F1M8GY{}#0G1^S);2>NQjK8W()<^<}L??<2gz&n9=0jX!Ik1~81 z$RUgY51`EJgHGE+xbAb>*rx;GlfaGi|0{p|^^^Ah(Kh=3N!Vn^{~-i`w#eI1W*ngZ zGB$Jr8BS^FXd6Tqn2&&~~^6 zF#dCWI0SqIco_I7@G;;KU=(;1cntVBum|`A@JZlPz~jKDfzJS+1)c!LfF{5FuKM$? zy4hEk!>f%O&)FDqkF=EWn?<%^$$K(}9Eh2qrT)v1rxzgqsPS{JzWN^Zpv&W+vw$4v z0)EW9=2X^|k&CG9M4Qiu2B4q7INB<~P5-pY|I*0MijV^{vNd@HZ3XaHtiw^<$^U5g z)Si0i4u5gnr%w_5(D#zVanRSfm|yyRpu3@{Z>P^ZI0M-iG4GtR1TX6J)#mfx=Rlil z3c)>p(zk6d3of#1Kj6hr67;!V9R&KFe=qtrqW`kec@|kXHC|G(K=+2g`R~D9=EZ*L zllEB#R)Bl{Rr;H<0?#PGKfM6-Tk^ltpiqFdufXq0xcc4qXr2yZ{t;BTUih8=F#0mK z6Q))4S(eu!_cAm;1<&UmYz>m<&dA&PxMp-ky6_zCP5jayLf@+X3yRVTtc|`t=jgwH zNH_sb%BXvJLLcaJZKOZ@r9X(iT&D=-E!2VvqI4%EX=yRP~6GrGX z=yQz_84W<+Tz@!+R)KQY(CV{-jMubzZFanA?#rC6Ih6&h!bghAJGmaX0qd`_do2U^{d#rUzTW?N(I12T)8Yz< zj@2CC9Hhi(VMiv~KXYBq$M5_ZFBz{0e(6tx3$6u>MP?o{0{JulX0Gj*KIv-uypo@w z(CT>Vp%wa+JI7a_Q5;3pH?+#XZ$cg&bu2c!w9;li$8VWA$Weo6XSSUIMbffR z7x^q?9Ie3X$ze%x_esdOE92cgCEb2aX4JYd4{n%2lcRRa%FWRwNy7fZ$QkqS6~)=- zZMHAB%rfwQdMI-OO77E;@t2bXGUlY>?Mldavrl-IAwlk}Z7&U*PcYZXhf;bQusT{_ z3H;@-W1{ta5i$*v#}d{q?jmz4LnN2&_F{oV-vM%-rvL^qbuLr*n2^9CoqFn zKKX1PQd9F6tJJ(p<`|a$GvIq9?tyx&WYV&d@ocO=Gi=2M;#MY>&Lk4CfyLoOHklb3 z7+e4wm{hIA-n^#YLuz&j9Z+`Ud zwf*k5NB;coG8*p_s37NWCm|eW8~+wGD}R%2=ls9+`-5G0 z{$KePlXhV0wo#es=!SFCeg2$sa(R9SY@SUt@`4iq&R>}GPdA`%)3i@rxUaBx87X)t zzmMfvOvxE(UwHoCto`%5Hob3}0u8=#<7pzPkn$wj_{{-#@^4^A&m9oIjVV{oz^W_^ z1(?5i{%FeBef~B9s;g?>l|?k-sb}@vNpryY^BcTwpkMuS?mGUs_22pagEHS$-+w6k p=QnnK^>5mrTmJ$4ziI#L_iqC2#d#of<=Nd z0m^0*PesX=Vk>?%cAPk|B75valPHRvwy|RC(dlEFX*)?L@w92uNt#5Uq)gJJ=}a0Y znY6om58NFt%-G9IRcW>`s9EW%JW%7bEJvBWU&pW+THAU0Z`<+gT zqRi;u3iMC@)Sxd$`2zhO`M`{!;yzvu&TY*_dmtjxjsJ$jm#- zo7o?q6v`XNE@51;3RkfR8n@BG zUJL?Z2>0|xG@{-}U!*9KjS&I%@97x|@8}t7^Z5NP#b6y*xybgJiHX_WGx3Q`IwPdY zRiGUYx!g|VB}HCxk7a33GAZP8nM7s+cTvHrSJU}miC(eGYJhm64A18B!lZ&wpM_C6 zi=}UbW#3dXj_2pl)cp&0KvoJ*P0UPYOZ6D5Yi_g6>=;AyYK+V)Vrep-%?i`ucyhlm zR%*I9%k+wN?JU!a7pzA$=k#Te@0GS5a~&PEk{Nd_MrNG8l>XYLopE|GYG0mldXak0 zT*r))2DF^bC7z?1aira)9p;_+i#)B>os#`sV~wn+IIo;hGXKj@@{!qtXqA*#D!B=H z=8a?~gAf@4rz>&QBW_fz5xkfTghJ}1SlN~2> zTH0@mIYzBNmFf{UBHMkjz(SMOHCSPCw71iHiRa|*Lwht~EGOJIBV^I8O?zq3_>E53 zmPO9L36*rs-AS7r_4V`-fz&D4CjD2Tsbim%t8zIh=azZep7_KJ8b_UXj-qF^WmX2I zmCO!`yUMc6FPU$lukZl^KmZ5;0U!VbfB+Bx0zd!=0D(ma%vDuZQsKE6ihSKGB=g~^ zY&tVOGfhJ3!{{+NlN3ILAIH~83fpEf6Df^WZrv8=z8HyXt{cwBr}HxhC0+a&u9k+y zhia`7DxF1V8;teACZmxGFY6T&Gvg!i>2V>S8$}Q5(nDu%r!c!Ow!&bfHgi#Y^oH8N zXBXkAnQY#D^zMpEYU^yaC=T1QVWMSK9AR2Ki*b(-jCNlYAf;@8W%-WPp!{Qk}dfA*8*5 zP^v4DMoNjaugmWX@|_7GfNV;6P{XLRNw+7J_WDzT5DM|BkjL#w`cr%;=#QhCkY+sS z_wt^!zblYPC(@n4AfHMngZ_{^#CN6Q$nb+a;! zL4UF4s`ON02-ELDxK;KbfHdpJS%7;)#?~VCoq$7DJtvk@OJna?)y{) z_f3lXCimk-+#5td00;m9AOHk_01yBIKmZ5;0U!VbfWU1 zai8U$VH?>h=G)9^<^g60)5cirKe2z){$=|| z?c?@A`$l`M?Ps=c+s@fuusv$a**;(k*;ZJ8YyEfYdFyAaIqR@BWL;zVU(3H(Ua~x7 z*=})JxT>F2{ZrL*sA>2B0U!VbfB+Bx0`Cn1P2DESOU*b7zSa0wqn&q{r~#yM?fFm6AD+AN>KlbW`>6PR{^Uc~4xcIjwPim#JU4&xNt7cRiY^N$j}|_CvGA#r z^G|<8UAiG4+AUgKc=hD`;m@h%oqmyoB!A))*N#7dU|cDserFJC%)?d4ZcXVfKH zeI}|K*;6?7@U^3-MRtXc9238*73;lXuL@6HC_MSt{GUIAgd1d@^&Y9qZ+r}O&Z+QMIILqv$DOotMvjdH%%t`Nv<@sJKLx%jX`s@~N|mOQ}`r+Dz0c zx(YedQRLo@vRQSlV)p#0bA?Msi`g5b?B|bMJ^M;AyG6_{eCG8lFC12~8`evZKlA$h zr_aoP_DJE$%tuPxI;iB`iJ zX;i=T%+<3O3l|?QJbDtw#Rt(Z=Y^CrGZ`NjoSsfk0R0x;<8gO}e1VRG+3_0L%8nI_ z>vy?3wfc37>jyi1TK(F^^}U{;M!&8`J#Lkdj`{J-7pP|tDedfihmmWvs zE(_LLP&-I{p19%s$B$or<12-izAB3ws!SA*%YFLu;tJY<-jp~L&&l%DW&{Dr3zxny z|JZBSo<6Ipy4ECGBD$hnqP9}X{nW+6>mQSI9Y$ zp^;XiQ=w`@3$2bwb-4}W^xKL;1##QD$Ws7Yy=1h>zsAr_FBD<&VawD}B`+~m6-n~o zo+!~HH#S2TG3vzUpNm9^HsdPQk)aM;i7pz%lm2NVK$~#WO4O$vlP-<)Y{c26(H)o7 zunG+Tj_9=EuVNIZm3$?Un+^D@7_Dg`ozg~V))O&_$~3Pu_~~+ym~|F|LliWvG6W^J z(nVaHxE|5r8uj(aF_VUp(z0YNp`wkTtRVv;M@{O<0IDJ-tCt&GqESlpV->DN7ZF+6 zY}iRJ5e0E9rXxi@RxG9?MLX&i(~%+^wM9-ftf7f6MlzP;4r!wo%W$XF5sPYk#9k7m z;BZN8WP-&gbkPXLZdi-+NCd);?GVS%MnKD<1}hl~ZG6E}i+-zL5>y}~qKYJ#i7Sx+ zn2CHPF@s86yAmic;yxFn1BNO?9l5M98EPyj4nUs&*^?CaTke0jU!Y$BT;+bmeGmN> z;7#ru+&^%C%U$HoabM=npkD@@;-2F^%pKwma`$p6^c#VDxFN2O+s?h8dzyQk`v`Z0 z+rs&{4z7(`$F1R3aMhfZGqS&9f5rZS{RunI{s;RV_D%Nd?AO@8X3w)3WhjfSr}C{^NwuZt z@~vAqVL?U}x5jW~GnslKUR9CFpUzG-!>(IpwFoa~!ck=k@;`=*sG#+~$1r~5UIMYZHN z8&)i;CBM&5x2Tr<7DKIyUu8|Tv58il^Bb3w4r)*OjmroK^;y5M+F{&Gm!9?;IZ|GG z-fv_HAl-?-kztK%Y30n{XtxdyV^j6BNJzfG{r*h10j zcL>a+Uh&NVllWac`zLJ_5C1u16Qw@=w;1ch>k6~6hQjCn`2ByX`lc+nPzewK0zd!= z00AHX1b_e#00KY&2mk>faGMgq=l}5hf13^tm<0rY01yBIKmZ5;0U!VbfB+Bx0zlv< z5rFgmn*f00e*l5C8%|00;m9AaENKfb;*`cyPcpAOHk_01yBIKmZ5; z0U!VbfB+Bx0yl{Ood4e>kWdW}00KY&2mk>f00e*l5C8%|00;nq+n4~H|KG-g1Ev81 zAOHk_01yBIKmZ5;0U!VbfB+Df00e*l5C8%|00`X1 z1mO4oxAEYBX+Qu700AHX1b_e#00KY&2mk>f00eFl0sQ=LH5(`{z+Pr^_S5!i+fM7_ zmJ?OqH5*L34Nq0PRWVd?*G*~+s(DWkFuv-zo2Tb?XR;~bf#KQ7#MDHukj`W?`OH*y zO#GT1-=3KeqN%ZHIVCPU6zLg>IHUc&k$ar`uB(n1V|Aj>K!2%z%-Ob2+ic7=SI3wg zVPxi=<<0DmPYUIYW0x?lSaJ!Iuwu*^9_Z`CeeE9z_Y6l|4|m(m4xXnU<@52xgrM)b z{+f}D8R^;97b(+o#@Z%wDS;SG#Sq_-$eocP=ipFuSI^L1=g!DpXV2)!K(rrKyDQQ^ zf~-RSM*I3UNwo}4PaVpnglTnYSw~dCgD@1?9vO=Cha!NQHE!8d0|pP zsL#SEoyF2O!m@8F8OQT;XzKojJ0L5CrzU15v!!~B)it--W_FCBc{N7n6|poK&t`?` za6GwR7%MehoMn1NyLOi8#S7M>nsfRx$oEQHkGYPHTFHz%79%rGUrK*%)6O`(7_~3Y zIK4^{6(JD>Q2f2uCYc|RGe4ND4GA|C;7ZpF9|I;>BYmx(ltOXuZOo$Xm>g%`W-~M?6t(7S}h16FEaP%qk7* zXn%C~sB-6#b(BIX_mX8&$Iv}S&Jj)4EhLI`k1(A>6Rl+BKSEWR9WEDrbSv>gxiYbO z?UhCAgIb}=17(4Fkgmh?M9)wR7Q0hiW;>T$W#x92u3k@JJY-wUW=DjVhfMFtV}tQ& zA)6n=%eG!tRd)RJTIw29L#bE88-{Xs=S}E#MoiEbz`i`U&17~QKr7#DaphCZLaFJ} zlB)GjrEZq`BW;27#g?dTiM}n;iMmSlwy308Or^ZRrX>t6mR!QPa^PJ@cNoP*I$T_& zRkZYWR%$1RUaXoTdeMzd718FRmtV(DWWg~gu61M`!}}@xxq&UgJ6qwSIm{;J+!ig} z2KL2s`GG`Em_8(+ZBcRMm3E8H-pKZz(Y_I9a%P&$*u1<l&;uIojLly~J~J_n|$SFqRYUn-Q{T*QUKR zX#7SeY|A3&--JrK=I*4;j{17~h(PL;Y?J=0(A2R{%2m0Xlyl2GZBKk+292Z6JH?wM zdH$y!rMQ0kbUSY55Tj_0dR#1CbJ`|&<~FrME}?tU2| zr@xjM?}9+!{uY7vT|S>003I8Fp@q z=QR88Xlj#lp~;K&!=lfND&pN67r{$}Mx5X8+&(n0tEAQ9tVMef>!49Rbs59!W=l2)Oik;MrC)OS; z>O}kd(PQXc=)toD2iDv^jGpU@+GRWJ>{i=@R~?x>T5}kyJjBBt8#n3f&MDr(SQj() zdWeJ*-#uWnn>8_&lVd<-f&1Xf$2T}!pX z1?wn#pT^bUm9|)ij5+3d=z-;A2m467?k0^36${|2I_)B<6{^-st>DI%%wipisl|J& zbjK<>*A3if-{GUTyjxcHPJYhO-1cQfu^WqpQWkrZD&7Z{-pJp;zDBy+j709yMvg|} z)8j(E+-+!qP)&F$n-?Cqo)Y-U!Ltm79lV;b1KA%A326Z>21#K|`G);Ljyx89LlM_5 zG+7jl@>P|cE=n0RTFQ6P0QAJ*sb0$HUg4mSO~teMC5*0F+UT-XEoro_RLpg3HD`8s zz4VEFx=F6-o*1xFvZ@!F?utg)Ij=}dC+^#Sj4e04%1`_2pJ#77WU0q_a~GmwcWxvE zsL+=DvuNA9`yisR3vUWzPGxmjVD0!lE;dT!NgJ1vVovK>GaPf00e*l5C8%|00;m9AOHm36$0@5 z|E^$%Mu7kj00KY&2mk>f00e*l5C8%|00`Vt0`T|$ZYgeP3 使用方式:每题都在“你的作答”填写答案;“批改区”由我批改后填写。 + +--- + +## 入门(16题) + +### 入门-1 [选择] +C# 源文件常见扩展名是:A. `.cs` B. `.csharp` C. `.dotnet` D. `.clr` + +**你的作答** +A + +**批改区** +- 结果:✅ 正确 +- 参考答案:A + +### 入门-2 [选择] +`Main` 方法作为入口,正确签名之一是:A. `void main()` B. `static void Main(string[] args)` C. `public Main()` D. `int Main(void)` + +**你的作答** +B + +**批改区** +- 结果:✅ 正确 +- 参考答案:B + +### 入门-3 [选择] +下列哪个是值类型:A. `string` B. `object` C. `int` D. `Array` + +**你的作答** +C + +**批改区** +- 结果:✅ 正确 +- 参考答案:C + +### 入门-4 [选择] +`var x = 10;` 中 `x` 的编译期类型是:A. `dynamic` B. `object` C. `int` D. `long` + +**你的作答** +C + +**批改区** +- 结果:✅ 正确 +- 参考答案:C + +### 入门-5 [选择] +输出到控制台应使用:A. `Console.ReadLine` B. `Console.WriteLine` C. `Console.Open` D. `Console.Print` + +**你的作答** +B + +**批改区** +- 结果:✅ 正确 +- 参考答案:B + +### 入门-6 [填空] +用于单行注释的符号是 `____` + +**你的作答** +`//` + +**批改区** +- 结果:✅ 正确 +- 参考答案:`//` + +### 入门-7 [填空] +`if` 条件表达式的结果类型必须是 `____` + +**你的作答** +`bool` + +**批改区** +- 结果:✅ 正确 +- 参考答案:`bool` + +### 入门-8 [填空] +将字符串 `"123"` 转 `int`,可用 `int.Parse("123")` 或 `____("123", out n)` + +**你的作答** +`Convert.Int32("123", out n)` + +**批改区** +- 结果:❌ 错误 +- 参考答案:`int.TryParse("123", out n)` +- 说明:`Convert.ToInt32` 没有 `out` 参数;带 `out` 的是 `TryParse`。 + +### 入门-9 [判断] +`const` 字段的值可以在运行时修改。对/错 + +**你的作答** +错 + +**批改区** +- 结果:✅ 正确 +- 参考答案:错 + +### 入门-10 [判断] +`string` 在 C# 中是引用类型。对/错 + +**你的作答** +对 + +**批改区** +- 结果:✅ 正确 +- 参考答案:对 + +### 入门-11 [代码结果] +写出输出: + +```csharp +int a = 5; +int b = 2; +Console.WriteLine(a / b); +Console.WriteLine(a / 2.0); +``` + +**你的作答** +`2` +`1.0` + +**批改区** +- 结果:❌ 错误 +- 参考答案: +```text +2 +2.5 +``` +- 说明:`a / b` 是整数除法,结果为 `2`。 + +### 入门-12 [代码改错] +修复下面代码使其可编译: + +```csharp +Console.Writeline("Hello") +``` + +**你的作答** +```csharp +Console.Writeline("Hello"); +``` + +**批改区** +- 结果:❌ 错误 +- 参考答案: +```csharp +Console.WriteLine("Hello"); +``` +- 说明:`WriteLine` 中 `L` 需要大写。 + +### 入门-13 [简答] +`==` 与 `Equals` 的常见区别是什么(1-2句话) + +**你的作答** +`Equals` 可以用于更复杂判断,`==` 只比较值。 + +**批改区** +- 结果:⚠️ 部分正确 +- 参考要点: + - `==` 是运算符,可被重载;不同类型语义可能不同。 + - `Equals` 是方法(实例/静态),常用于值相等判断。 + - 对 `string` 来说,`==` 比较的是内容(被重载),不是引用地址。 + +### 入门-14 [编程] +从控制台读取姓名和年龄,输出:`你好,张三,你明年 19 岁。` + +**你的作答** +```csharp +string name = Console.Readline(); +int age = int.Parse(Console.Readline()); +Console.WriteLine($"你好,{name},你明年 {age} 岁。"); +``` + +**批改区** +- 结果:❌ 错误 +- 参考答案: +```csharp +string name = Console.ReadLine(); +int age = int.Parse(Console.ReadLine()!); +Console.WriteLine($"你好,{name},你明年 {age + 1} 岁。"); +``` +- 说明:`ReadLine` 大小写错误,且“明年”应输出 `age + 1`。 + +### 入门-15 [编程] +输入一个整数,判断奇偶并输出 `odd/even` + +**你的作答** +```Csharp +int value = int.Parse(Console.ReadLine()); +if( value%2 != 0 ) +{ + Console.WriteLine("odd"); +} +else +{ + Console.WriteLine("even"); +} +``` + +**批改区** +- 结果:❌ 错误 +- 主要问题:`int.TryParse(...)` 返回 `bool`,不能直接赋给 `int` +- 参考答案: +```csharp +if (int.TryParse(Console.ReadLine(), out int value)) + Console.WriteLine(value % 2 == 0 ? "even" : "odd"); +``` + +### 入门-16 [编程] +输入三个整数,输出最大值 + +**你的作答** +```Csharp +int[] value; +int maxValue = 0; +value[0] = int.Parse(Console.ReadLine()); +value[1] = int.Parse(Console.ReadLine()); +value[2] = int.Parse(Console.ReadLine()); +for(int i = 0;i<2;i++) +{ + if(value[i]>=value[i+1]) + { + maxValue = value[i]; + } +} +Console.WriteLine(maxValue); +``` + +**批改区** +- 结果:❌ 错误 +- 主要问题:数组未初始化 +- 参考答案: +```csharp +int a = int.Parse(Console.ReadLine()!); +int b = int.Parse(Console.ReadLine()!); +int c = int.Parse(Console.ReadLine()!); +int maxValue = Math.Max(a, Math.Max(b, c)); +Console.WriteLine(maxValue); +``` + +--- +## 基础(18题) + +### 基础-1 [选择] +`for` 循环最适合:A. 已知次数迭代 B. 无限循环 C. 异常处理 D. 命名空间管理 + +**你的作答** +A + +**批改区** +- 结果:✅ 正确 +- 参考答案:A + +### 基础-2 [选择] +`break` 在循环中的作用是:A. 跳过本次 B. 结束当前循环 C. 结束程序 D. 重启循环 + +**你的作答** +B + +**批改区** +- 结果:✅ 正确 +- 参考答案:B + +### 基础-3 [选择] +`continue` 的作用是:A. 结束方法 B. 退出程序 C. 跳过本次迭代 D. 抛出异常 + +**你的作答** +C + +**批改区** +- 结果:✅ 正确 +- 参考答案:C + +### 基础-4 [选择] +数组声明正确的是:A. `int arr = new int[3]` B. `int[] arr = new int[3]` C. `array arr` D. `int arr[] = 3` + +**你的作答** +B + +**批改区** +- 结果:✅ 正确 +- 参考答案:B + +### 基础-5 [选择] +`List` 位于命名空间:A. `System.Text` B. `System.Collections.Generic` C. `System.Linq.Expressions` D. `System.IO` + +**你的作答** +B + +**批改区** +- 结果:✅ 正确 +- 参考答案:B + +### 基础-6 [填空] +定义一个可空整型变量:`int____ x = null;` + +**你的作答** +? + +**批改区** +- 结果:✅ 正确 +- 参考答案:`?` + +### 基础-7 [填空] +声明并初始化字典:`Dictionary d = new ____();` + +**你的作答** +`Dictionary + +**批改区** +- 结果:✅ 正确 +- 参考答案:`Dictionary` +- 说明:你填的类型名是对的,只是 Markdown 里的反引号没闭合。 + +### 基础-8 [填空] +捕获异常的关键字是 `____` + +**你的作答** +try和catch + +**批改区** +- 结果:⚠️ 部分正确 +- 参考答案:`catch` +- 说明:`try` 用来包裹可能抛异常的代码,真正负责捕获异常的是 `catch`。 + +### 基础-9 [填空] +释放非托管资源常用模式:实现 `____` 接口 + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 基础-10 [代码结果] +写出输出: + +```csharp +for (int i = 0; i < 5; i++) +{ + if (i == 2) continue; + if (i == 4) break; + Console.Write(i); +} +``` + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 基础-11 [代码结果] +写出输出: + +```csharp +string s = null; +Console.WriteLine(s?.Length ?? -1); +``` + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 基础-12 [改错] +找出并修复问题: + +```csharp +int[] nums = {1,2,3}; +Console.WriteLine(nums[3]); +``` + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 基础-13 [简答] +`throw;` 和 `throw ex;` 的差异是什么 + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 基础-14 [编程] +用 `while` 计算 `1..n` 的和(n 从输入读取) + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 基础-15 [编程] +统计一个字符串中元音字母个数(忽略大小写) + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 基础-16 [编程] +手写一个方法 `bool IsPrime(int n)` + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 基础-17 [编程] +使用 `List` 去重并升序输出 + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 基础-18 [编程] +使用 `Dictionary` 统计一句话中每个单词出现次数 + +**你的作答** +(待填写) + +**批改区** +(待批改) + +--- + +## 核心(18题) + +### 核心-1 [选择] +面向对象三大特性不包括:A. 封装 B. 继承 C. 多态 D. 事务 + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 核心-2 [选择] +`virtual` + `override` 用于:A. 字段隐藏 B. 运行时多态 C. 命名空间引用 D. 泛型约束 + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 核心-3 [选择] +`abstract` 类:A. 可直接实例化 B. 不能包含实现 C. 不能被继承 D. 不能直接实例化 + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 核心-4 [选择] +`interface` 成员默认:A. private B. protected C. public 合同 D. internal + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 核心-5 [选择] +泛型约束 `where T : class` 的含义是:A. 值类型 B. 引用类型 C. 必须有无参构造 D. 必须实现 IDisposable + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 核心-6 [填空] +声明一个自动属性:`public int Age { ____; ____; }` + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 核心-7 [填空] +只读自动属性常见写法:`public string Id { get; ____; }` + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 核心-8 [填空] +委托声明关键字是 `____` + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 核心-9 [填空] +事件订阅语法:`publisher.SomeEvent ____ Handler;` + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 核心-10 [代码阅读] +输出是什么: + +```csharp +class A { public virtual void M() => Console.Write("A"); } +class B : A { public override void M() => Console.Write("B"); } +A x = new B(); +x.M(); +``` + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 核心-11 [代码阅读] +输出是什么: + +```csharp +int Add(int a, int b = 10) => a + b; +Console.WriteLine(Add(5)); +``` + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 核心-12 [改错] +指出并修复: + +```csharp +interface IRun { void Go() { Console.WriteLine("go"); } } +``` + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 核心-13 [简答] +`override` 与 `new` 隐藏成员的行为区别 + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 核心-14 [简答] +什么时候用接口,什么时候用抽象类(简述判断标准) + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 核心-15 [编程] +设计 `Shape` 抽象类,派生 `Circle/Rectangle`,实现 `GetArea()` + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 核心-16 [编程] +实现泛型方法 `Swap(ref T a, ref T b)` + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 核心-17 [编程] +定义一个 `event EventHandler`,在数据变化时触发 + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 核心-18 [编程] +实现一个只读集合包装(对外不可修改,内部可维护) + +**你的作答** +(待填写) + +**批改区** +(待批改) + +--- + +## 进阶(18题) + +### 进阶-1 [选择] +`async/await` 中,`await` 作用是:A. 创建线程 B. 异步等待任务完成 C. 阻塞 UI 线程 D. 强制并行 + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 进阶-2 [选择] +表示“一个无返回值异步操作”的常用返回类型:A. `void` B. `Task` C. `object` D. `Result` + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 进阶-3 [选择] +LINQ 中用于投影的操作符:A. `Where` B. `Select` C. `Any` D. `Count` + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 进阶-4 [选择] +延迟执行是 LINQ 的常见特性之一,以下通常会立即执行的是:A. `Where` B. `Select` C. `ToList` D. `OrderBy` + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 进阶-5 [选择] +`using` 语句主要用于:A. 导入命名空间 B. 自动释放资源 C. 定义别名 D. 启动任务 + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 进阶-6 [填空] +声明取消令牌源:`var cts = new ____();` + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 进阶-7 [填空] +正则匹配常用类型:`System.Text.RegularExpressions.____` + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 进阶-8 [填空] +线程安全递增可用:`Interlocked.____(ref x);` + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 进阶-9 [填空] +文件全部文本读取:`File.____(path)` + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 进阶-10 [代码结果] +写出输出: + +```csharp +var nums = new[] {1,2,3,4,5}; +var q = nums.Where(x => x % 2 == 1).Select(x => x * x); +Console.WriteLine(string.Join(",", q)); +``` + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 进阶-11 [代码结果] +判断是否死锁风险并说明一句原因: + +```csharp +Task.Run(async () => { await Task.Delay(100); }).Wait(); +``` + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 进阶-12 [简答] +`Task.WhenAll` 与顺序 `await` 的区别 + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 进阶-13 [简答] +`IEnumerable` 与 `IQueryable` 的核心差异 + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 进阶-14 [编程] +异步读取文本文件并统计行数,支持取消(`CancellationToken`) + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 进阶-15 [编程] +用 LINQ 完成:给定学生列表,按班级分组后求每组平均分并降序输出 + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 进阶-16 [编程] +实现一个简单缓存 `MemoryCache`(带过期时间) + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 进阶-17 [编程] +写一个扩展方法 `IsNullOrEmptyEx(this string? s)` + +**你的作答** +(待填写) + +**批改区** +(待批改) + +### 进阶-18 [编程] +设计一个可并发调用的计数器类,要求线程安全 + +**你的作答** +(待填写) + +**批改区** +(待批改) diff --git a/笔记/CSharp笔记汇总.md b/笔记/CSharp笔记汇总.md index afdd88b..0c9dfdf 100644 --- a/笔记/CSharp笔记汇总.md +++ b/笔记/CSharp笔记汇总.md @@ -13,19 +13,21 @@ 5. [[结构体]]和[[枚举]] # 核心 1. [[成员变量和访问修饰符]] -2. [[构造、解析、垃圾回收]] +2. [[构造函数、析构函数、垃圾回收]] 3. [[成员属性]] 4. [[索引器]] -5. 静态成员静态类和静态构造函数 -6. 内部类和分布类 -7. 装箱与拆箱 -8. 密封类 -9. 多态vob -10. 抽象类和抽象函数 -11. 接口 -12. 密封函数 -13. 命名空间 -14. 抽象类的接口的区别 +5. [[静态成员]],[[静态类和静态构造函数]] +6. [[运算符重载]] +7. [[内部类和分部类]] +8. [[继承]] +9. 装箱与拆箱 +10. 密封类 +11. 多态vob +12. 抽象类和抽象函数 +13. 接口 +14. 密封函数 +15. 命名空间 +16. 抽象类的接口的区别 # 进阶 1. ArrayList 2. Stack @@ -43,4 +45,4 @@ 14. 协变逆变 15. 多线程 16. 预处理器 -17. 反射 \ No newline at end of file +17. 反射